gpt4 book ai didi

java - 有没有一种方法可以在线程之间进行通信并交换信息,例如java中可运行对象内的getter方法

转载 作者:行者123 更新时间:2023-11-30 01:56:43 26 4
gpt4 key购买 nike

有没有一种方法可以在线程之间进行通信,例如在不同线程中更新变量时使用 getter 获取变量

例如,如果我像这样在可运行线程中加载图像:

Thread t1 = new Thread(new Runnable(){
public void run(){
//Ido the loading here
}
}

有没有一种方法可以与它进行通信,例如获取 var 的值:

Thread t1 = new Thread(new Runnable(){
public void run(){
//Ido the loading here
name = "dsad";
}
public void getName(){ return name }
}

但它看起来不起作用

最佳答案

至于线程通信,有java.util.concurrent.Exchanger

在您的特定情况下,也可以使用 Java 8 中的 CompletableFuture,因为 Exchanger 允许多个通信(两个线程都继续执行),这可能不是您的情况。

手动创建线程可能会导致不同的问题:

  • 每次创建线程都是昂贵的操作,
  • 创建大量同时运行的线程可能会涉及调度程序问题、内存问题(每个线程都有自己的堆栈,...),
  • 以不安全的方式发布值(请参阅安全发布和安全初始化主题)可能会导致数据争用,这非常糟糕

因此,java.util.concurrent.ExecutorServicejava.util.concurrent.CompletableFuture 的组合可以让您以线程安全且易于阅读的方式执行异步加载.

关于java - 有没有一种方法可以在线程之间进行通信并交换信息,例如java中可运行对象内的getter方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54209618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com