最近在學習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 優...