[英]Why are we not getting updated value of count, if both the threads are executing simultaneously?
兩個線程同時在給定程序中執行,但此代碼每次都給出0輸出。 為什么不更新計數值?
class ThreadA {
public static void main(String[] agrs) {
ThreadB t = new ThreadB();
t.start();
System.out.println(t.count);
}
}
class ThreadB extends Thread {
int count = 0;
public void run() {
for(int i = 0; i < 10; i++) {
count = count + i;
}
}
}
TLDR :
t.join();
說明 :
當您啟動ThreadB時,線程可能不會立即啟動。 由調度程序決定,哪個線程在哪個時間執行。 此外,ThreadA不會等待ThreadB完成其執行。 所以會發生什么(可能,因為調度程序可以在每次執行中做出不同的決定):
你想要的是:
您可以通過使用要等待的線程的join
方法來實現:
public static void main(String[] agrs) {
ThreadB t = new ThreadB();
t.start();
t.join(); // Wait for ThreadB
System.out.println(t.count);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.