Java 線程的生命周期完整實例分析
本文實例講述了Java 線程的生命周期。分享給大家供大家參考,具體如下:
一 代碼
/** * @Title: ThreadStatus.java * @Description: TODO(演示線程的生命狀態(tài)) */ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.TimeUnit; public class ThreadStatus { private static Lock lock = new ReentrantLock(); public static void main(String[] args) { new Thread(new TimeWaiting(), "TimeWaitingThread").start(); new Thread(new Waiting(), "WaitingThread").start(); // 使用兩個Blocked線程,一個獲取鎖,一個被阻塞 new Thread(new Blocked(), "BThread-1").start(); new Thread(new Blocked(), "BThread-2").start(); new Thread(new Sync(), "SyncThread-1").start(); new Thread(new Sync(), "SyncThread-2").start(); } //該線程不斷地進入隨眠 static class TimeWaiting implements Runnable { public void run() { while (true) { try { TimeUnit.SECONDS.sleep(5); System.out.println("I am TimeWaiting Thread: "+ Thread.currentThread().getName()); } catch (InterruptedException e) { } } } } //該線程在Waiting.class實例上等待 static class Waiting implements Runnable { public void run( ) { while (true) { synchronized (Waiting.class) { try { System.out.println("I am Waiting Thread: "+ Thread.currentThread().getName()); Waiting.class.wait( ); } catch (InterruptedException e) { e.printStackTrace( ); } } } } } //該線程在Blocked.class實例上加鎖后,不會釋放該鎖 static class Blocked implements Runnable { public void run( ) { synchronized (Blocked.class) { while (true) { try { System.out.println("I am Blocked Thread: "+ Thread.currentThread().getName()); TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) {} } } } } //該線程用于同步鎖 static class Sync implements Runnable { public void run( ) { lock.lock( ); try { System.out.println("I am Sync Thread: "+ Thread.currentThread().getName()); TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { } finally { lock.unlock(); } } } }
二 運行
I am Waiting Thread: WaitingThread
I am Blocked Thread: BThread-1
I am Sync Thread: SyncThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am Sync Thread: SyncThread-2
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
I am TimeWaiting Thread: TimeWaitingThread
I am Blocked Thread: BThread-1
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
Java參數(shù)校驗中validation和validator的區(qū)別詳解
這篇文章主要介紹了Java參數(shù)校驗中validation和validator的區(qū)別詳解,一般對于復(fù)雜的業(yè)務(wù)參數(shù)校驗,可以通過校驗類單獨的校驗方法進行處理,通常對于一些與業(yè)務(wù)無關(guān)簡單的參數(shù)校驗可以采用validation和 validator通過注解的方式實現(xiàn)校驗,需要的朋友可以參考下2023-10-10Spring4下validation數(shù)據(jù)校驗無效(maven)的解決
這篇文章主要介紹了Spring4下validation數(shù)據(jù)校驗無效(maven)的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Java數(shù)據(jù)結(jié)構(gòu)與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09MyBatisPlus的autoResultMap生成策略實現(xiàn)
本文主要介紹了MyBatisPlus的autoResultMap生成策略實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02