執行緒安全意味著不需要同步了嗎?
即使Java方法說明文件說是執行緒安全的,不代表就多執行緒下的執行緒操作肯定安全,還是會遇到同步問題的。
比如Vector,對比ArrayList是一個執行緒安全的類,但是不恰當的操作,還是會有問題,下面的程式碼中,Vector中放了10000個數字,有20個執行緒,迴圈刪除這個列表中的最後一個數字。
執行的時候,很大的概率會出現java.lang.ArrayIndexOutOfBoundsException的異常,因為檢測到size的時候和執行刪除的時候,size是不同的,程式可能會出現異常。
for (int i = 0; i < 10000; i++) {
c.add(i);
}
for (int i = 0; i < 20; i++) {
FutureTask<Integer> task = new FutureTask<Integer>(() -> {
while (c.size() > 0) {
try {
c.remove(c.size() - 1);
}
catch (Exception e) {
// // TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("thread finished");
return 0;
});
new Thread(task).start();
}
本文轉自cnn23711151CTO部落格,原文連結:http://blog.51cto.com/cnn237111/2056121 ,如需轉載請自行聯絡原作者
相關文章
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- 非同步與並行~List<T>是執行緒安全的嗎?非同步並行執行緒
- ConcurrentHashMap執行緒安全嗎?HashMap執行緒
- 多執行緒,你覺得你安全了?(執行緒安全問題)執行緒
- c#執行緒-執行緒同步C#執行緒
- 執行緒同步及執行緒鎖執行緒
- 執行緒同步執行緒
- 多執行緒非同步安全,安全鎖的問題執行緒非同步
- 多執行緒和多執行緒同步執行緒
- java執行緒學習5——執行緒同步之同步方法Java執行緒
- Q:你瞭解非同步程式設計、程式、單執行緒、多執行緒嗎?非同步程式設計執行緒
- 執行緒與同步非同步執行緒非同步
- 執行緒的同步執行緒
- 理解執行緒同步執行緒
- 深入執行緒同步執行緒
- Java—執行緒同步Java執行緒
- 多執行緒同步執行緒
- .net執行緒同步執行緒
- 執行緒同步方法執行緒
- 執行緒3--執行緒安全執行緒
- Java執行緒:執行緒的同步與鎖Java執行緒
- 執行緒安全和執行緒不安全理解執行緒
- 執行緒安全執行緒
- 多執行緒-執行緒安全問題的產生原因分析以及同步程式碼塊的方式解決執行緒安全問題執行緒
- SimpleDateFormat一定是執行緒不安全嗎?ORM執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- iOS多執行緒之執行緒安全iOS執行緒
- Java執行緒(一):執行緒安全與不安全Java執行緒
- 4、Linux多執行緒,執行緒同步(2)Linux執行緒
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- 非同步/同步,阻塞/非阻塞,單執行緒/多執行緒概念梳理非同步執行緒
- Java之執行緒安全問題的3種處理方式(通過執行緒同步)Java執行緒
- java 多執行緒 –同步Java執行緒
- 執行緒同步機制執行緒
- java 多執行緒 --同步Java執行緒
- NPTL 執行緒同步方式執行緒
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒