多線程(六)---多線程安全相關問題
(一)多線程安全---問題代碼
(二) 產生多線程安全問題的緣由
1.線程任務中有處理到共享的數據
2.線程任務中有多個線程操做共享數據
一個線程在操做共享數據的過程當中,其餘線程參與了運行,致使數據錯誤問題安全
3.內存圖分析
(三) 解決思想
解決思想:多條線程操做同一數據源時。其中一條線程在操做,其餘線程不參與操做計算。多線程
(四) 解決方案
synchronized (對象){ //同步的代碼塊 }
代碼修改以下
class SaleTicket2 implements Runnable{ private int tickets = 100; Object obj = new Object(); public void run(){ while (true){ synchronized (obj){ if (tickets>0){ System.out.println(Thread.currentThread().getName()+"------tickets:"+tickets--); } } } } }