main執行緒會比其他執行緒優先結束

2021-08-04 19:07:02 字數 927 閱讀 5574

最近在學習volatile時,看到一篇文章關於使用volatile進行同步同步控制利用執行緒實現計數器,**如下:

public class main catch (interruptedexception e) 

count++;

}public static void main(string args) throws ioexception

}).start();

}system.out.println("執行結果是:" + main.count);

}}

執行結果為(不同機器結果不同、每次結果也不同):|期望結果應為1000

執行結果是:116
此時如果新增volatile關鍵字:

private static volatile int count = 0;
thread.currentthread().setpriority(thread.min_priority);

for (int i = 0; i < 1000; i++)

});thread.setpriority(thread.max_priority);

thread.start();

}system.out.println("執行結果是:" + main.count);

此時的執行結果為:

執行結果是:978
可以看到執行結果十分接近期望結果的1000。我們將main執行緒的優先度調整為最低,將新建立的執行緒的優先度調整為最高,最後的執行結果值也提公升了許多。兩次結果的差距可以說明這是因為main執行緒在其他執行緒全部結束之前,就提前結束了。

最後,原因是什麼,還有待之後的學習。(當然這些也只是lz的猜測,或許真相也不是如此呢)

其他執行緒訪問UI執行緒

final progressbar pb new progressbar shell,swt.none pb.setbounds 68,153,365,17 final int minnimum pb.getminimum final int maximum pb.getmaximum runnab...

多執行緒 執行緒優先順序

目錄 1 執行緒優先順序具有繼承性 2 執行緒優先順序的作用 thread類原始碼中定義 最低優先順序為1 public final static int min priority 1 一般沒有繼承,沒有顯示指定優先順序時,預設優先順序為5 public final static int norm ...

執行緒優先順序 守護執行緒

執行緒是存在優先順序的,其範圍是 1 10,數字越大,優先順序越高,意味著先執行的概率越大,注意,優先順序越高不等於先執行,只是先執行的概率越高。在api中,有與優先順序對應的常量 package threadclass 測試執行緒優先順序 1 10 norm 5 預設 min 1 max 10 優...