- 相關(guān)推薦
Java 如何進(jìn)行線程同步
線程的同步知識(shí)也是公司面試必考知識(shí),同學(xué)們?cè)谌ッ嬖嚽耙欢ㄒ獜?fù)習(xí)一下,下面就給大家復(fù)習(xí)一下線程的知識(shí):
線程在執(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í)行。
線程的同步主要靠下面幾個(gè)方法:
1、wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的lock,注意wait的線程是不會(huì)自動(dòng)喚醒的。
2、sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常,注意這個(gè)方法是不會(huì)釋放鎖的,而是持有鎖停止多少秒后自動(dòng)喚醒。
3、notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。
4、notityAll():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。
【Java 如何進(jìn)行線程同步】相關(guān)文章:
Java線程同步的方法05-27
java多線程的同步和異步02-02
java中如何停止線程08-14
如何使用java多線程05-04