我做了这样的一个波纹管:
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); }
我只想使用我在线程中所做的计算将其存储在某些变量中以备后用。
或者简单地添加
... a.start(); a.join(); // Add this ...
等待线程完成,然后再获得结果。
您的问题是您试图在计算结果之前获得结果。您应该等待线程完成后才能获得结果。这个答案也许不是最好的,但是是最简单的。由于其他人已经在使用Executors课程,所以我不想重复他们的答案。但是,在进入执行器以帮助您更好地理解线程之前,我会熟悉Thread及其方法,因为从您的帖子看来,您可能是该领域的新手。
感谢l4mpi(在meta网站上)指出了缺乏解释的地方。