線程的同步與通信


多個線程在操縱共享資源——實例變量時,為了保證每個線程能正常執行操作,保證共享資源能正常訪問和修改。Java引入了同步進制。

具體做法是在有可能引起共享資源競爭的代碼前加上synchronized標記。這樣的代碼被稱為同步代碼塊。

每個Java對象都有且只有一個同步鎖,在任何時刻,最多只允許一個線程擁有這把鎖。當一個線程要執行同步代碼塊時,必須先獲得該對象的鎖。

 

鎖池:

如果鎖已經被線程占用,其他想用鎖的線程進入該對象的鎖池中,線程進入阻塞狀態。

 

線程的通信

wait():執行該方法的線程釋放對象的鎖,Java虛擬機把該線程放到該對象的等待池中

notify():執行該方法的線程喚醒在對象的等待池中等待的一個線程。

notifyAll():會把對象的等待池中的所有線程都轉到對象的鎖池中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM