線程安全
講到線程安全 enn。。。。怎麼說呢 這是一個很複雜的東西 --算了直接上代碼吧
文章中 有些我也是複制的不過我不像别人看都不看 我都看過一邊覺得對的我才會複制
public class SecurityThead {
private static int num=0;
//10個線程,使用線程工具類
private static CountDownLatch countDownLatch = new CountDownLatch(10);
private static void addNum(){
num++;
}
public static void main(String[] args) {
for (int i=0;i<10;i++){
new Thread(()->{
for(int j=0;j<100;j++){
addNum();
try {
Thread.sleep(10L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
countDownLatch.countDown();
}).start();
}
while(true){
if(countDownLatch.getCount()==0){
System.out.println(num);
break;
}
}
}
CountDownLatch是通過一個計數器來實作的,計數器的初始值為線程的數量。每當一個線程完成了自己的任務後,計數器的值就會減1。當計數器值到達0時,它表示所有的線程已經完成了任務,然後在閉鎖上等待的線程就可以恢複執行任務。
輸出結果不是1000欸 為什麼呢
多個線程執行時,CPU對線程的排程是随機的,我們不知道目前程式被執行到哪步就切換到了下一個線程,是以就會發生線程不安全的情況
有不對的地方歡迎指出來
喜歡的話請點個關注