執行緒同步其實就是兩個問題:①執行緒間共享資料的問題。②執行緒同步的實現機制。
首先明白,為什麼要執行緒同步:多執行緒併發執行訪問同一資料時,容易發生資料狀態不定,所以我們需要執行緒同步。
demo**如下,我們建立乙個共享的data資料,理想情況下,我們希望變數 i 的值交替輸出:
可是結果卻不是我們所想要的。這裡就發生了資料共享的串擾。因此我們採用syschronized來鎖住共享資料。實現方式如下:
這個syschronized是乙個同步塊的所,另外我們還可以採用同步方法的所,實現如下圖:
同步塊和同步方法都可以實現執行緒的同步機制,同步塊獲取的是任意物件的鎖,而同步方法獲取的是當前物件的鎖,其區域更大。
總結執行緒同步實現機制就是:
每個類一把鎖,每個物件一把鎖。只有獲取鎖的執行緒才能進入同步區域。
java中線程問題
24.09 多執行緒 獲取名字和設定名字 掌握 1.獲取名字 通過getname 方法獲取執行緒物件的名字 2.設定名字 通過建構函式可以傳入string型別的名字 new thread start new thread yyy start 通過setname string 方法可以設定執行緒物件的...
java中線程的同步性
目的 測試同步 塊和同步函式鎖定同乙個物件才能實現執行緒安全 其實我們能夠實現執行緒同步其實就是因為我們在執行到某乙個執行緒的時候,設定了乙個標誌 也就是我們鎖定了乙個物件,要實現執行緒的同步,我們每次鎖定的物件必須要是同乙個 class lesson5testdemo1 catch excepti...
Java中線程池的使用
1 threadpoolexecutor類構造器可以設定的引數 核心執行緒數 如果執行緒池中的執行緒數小於核心執行緒數,當新任務提交時,會新建乙個執行緒去處理該任務。最大執行緒數 如果執行緒池中的執行緒數大於等於核心執行緒數,但是小於最大執行緒數,當新任務提交時,會將任務加入任務佇列,如果任務佇列已...