小编典典

如何从线程返回值(java)

java

我做了这样的一个波纹管:

public class MyThread implements Runnable {
  private int temp;

  public MyThread(int temp){
     this.temp=temp;
  }

  @Override
  public void run() {
    temp+=10;
    return;
  }

  public int getTemp() {
    return temp;
  }
}

但是当我尝试通过getTemp使用temp时我得到0

class Main {
  MyThread foo = new MyThread(10);
  Thread a = new Thread(foo);
  a.start();
  int aa = foo.getTemp();       
  System.out.println(aa);
}

我只想使用我在线程中所做的计算将其存储在某些变量中以备后用。


阅读 208

收藏
2020-11-23

共1个答案

小编典典

或者简单地添加

...
a.start();
a.join(); // Add this
...

等待线程完成,然后再获得结果。

您的问题是您试图在计算结果之前获得结果。您应该等待线程完成后才能获得结果。这个答案也许不是最好的,但是是最简单的。由于其他人已经在使用Executors课程,所以我不想重复他们的答案。但是,在进入执行器以帮助您更好地理解线程之前,我会熟悉Thread及其方法,因为从您的帖子看来,您可能是该领域的新手。

感谢l4mpi(在meta网站上)指出了缺乏解释的地方。

2020-11-23