先看執行緒不同步的情況:
//資料類
package com.itjob;
public class person
public void get() }
//用來顯示person資料
package com.itjob;
public class consumer implements runnable
public void run() }}
//用來修改person資料
package com.itjob;
public class producer implements runnable
public void run()
else
i = (i+1)%2;
} }}
//主程式類
package com.itjob;
public class threadcom
}
執行的結果如圖:
修改為執行緒同步
只需要修改person類就ok
了,同步只是對資料加鎖,與執行緒無關,當多個執行緒訪問同乙個資料的時候,就要對資料加鎖(同步)
修改後的**如:
//資料類
package com.itjob;
public class person
public synchronized void get()
}
執行的結果不會有男女不分的情況! 4 執行緒同步通訊
子執行緒迴圈10次,接著主線程迴圈100次,接著又回到子執行緒迴圈10次,接著再回到主線程又迴圈100,如此迴圈50,請寫出程式。package cn.itcast.thread public class traditionalcomuication start new thread new run...
執行緒同步一例
功能 主線程建立乙個副執行緒,然後主線程負責將鍵盤輸入的內容寫到buffer,然後通知副執行緒將資料列印,列印完後,副執行緒通知主線程繼續從輸入緩衝區中將讀到的字元寫到buffer陣列。當輸入quit命令時,主線程退出,副執行緒也會隨著主線程的結束而自動結束。include include incl...
JAVA執行緒的同步方法和單例模式執行緒安全筆記
開始時間 2018年8月12日20 09 02 結束時間 2018年8月12日22 44 44 累計時間 2小時 原因 操作同乙個資料中間切換的時候,乙個執行緒操作共享資料的時候,未執行完的情況下 另外的執行緒參與進來,導致安全問題。解決方案 乙個執行緒操作共享資料完畢之後,其他執行緒才可以操作。比...