- 相關(guān)推薦
Java 如何進(jìn)行線程同步
線程的同步知識也是公司面試必考知識,同學(xué)們在去面試前一定要復(fù)習(xí)一下,下面就給大家復(fù)習(xí)一下線程的知識:
線程在執(zhí)行過程中,可以處于下面幾種狀態(tài):
就緒(Runnable):線程準(zhǔn)備運(yùn)行,不一定立馬就能開始執(zhí)行。
運(yùn)行中(Running):進(jìn)程正在執(zhí)行線程的代碼。
等待中(Waiting):線程處于阻塞的狀態(tài),等待外部的處理結(jié)束。
睡眠中(Sleeping):線程被強(qiáng)制睡眠。
I/O阻塞(Blocked on I/O):等待I/O操作完成。
同步阻塞(Blocked on Synchronization):等待獲取鎖。
死亡(Dead):線程完成了執(zhí)行。
線程的同步主要靠下面幾個方法:
1、wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock,注意wait的線程是不會自動喚醒的。
2、sleep():使一個正在運(yùn)行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常,注意這個方法是不會釋放鎖的,而是持有鎖停止多少秒后自動喚醒。
3、notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且不是按優(yōu)先級。
4、notityAll():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
【Java 如何進(jìn)行線程同步】相關(guān)文章:
Java線程同步的方法05-27
java多線程的同步和異步02-02
Java線程同步的優(yōu)先級介紹04-10
java中如何停止線程08-14
如何使用java多線程05-04
如何創(chuàng)建并運(yùn)行Java線程01-11
Java線程同步的優(yōu)先級是什么04-24