初学多线程使用中踩过的坑
生活随笔
收集整理的這篇文章主要介紹了
初学多线程使用中踩过的坑
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
wait使用,外面沒有加synchronized ,導致頻繁報錯。
IllegalMonitorStateException - 如果當前線程不是對象監視器的所有者報異常。
wait使用時會釋放鎖。并且使當前線程休眠,所以如果沒有在synchronized 里面,沒有獲得鎖。就會報錯。
synchronized:同步代碼塊。當多個線程訪問共享數據的時候,可以用同步代碼塊包裹避免多個線程搶占資源出現不完全的情況。
wait() notify() notifyAll() 都必須在synchronized 中使用
wait()導致當前線程等待,直到另一個線程調用該對象的 notify()方法或 notifyAll()方法。 被喚醒后按之前的順序執行。
notifyAll() 喚醒正在等待對象監視器的所有線程
notify() 喚醒正在等待對象監視器的單個線程。
兩個方法都不會釋放當前的鎖
總結
以上是生活随笔為你收集整理的初学多线程使用中踩过的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五一假期什么理财产品会有收益?五一假期理
- 下一篇: 二位数组的随机生成,遍历,求和,反转。和