JAVA多線程編程

為什么要使用多線程?

1. 使用更多的處理器核心

2. 更快的響應(yīng)時間

3. 更好的編程模型

線程優(yōu)先級

在Java線程中,通過一個整型成員變量priority來控制優(yōu)先級,優(yōu)先級的范圍從1-10。

線程的狀態(tài):NEW / RUNNABLE / BLOCKED / WAITING / TIME_WAITING /TERMINATED一共6種狀態(tài)

Deamon線程是一種支持型線程,因為它主要被用作程序中后臺調(diào)度以及支持性工作。這意味著當一個Java虛擬機中不存在非Deamon線程的時候,java虛擬機將會退出??梢酝ㄟ^set方法將線程設(shè)置為Deamon線程。(注意其finally可能不會被執(zhí)行)


-->啟動和終止線程

通過調(diào)用線程的start()方法進行啟動。

構(gòu)造線程:一個新構(gòu)造的線程對象是由其parent線程來進行空間分配的,而child線程繼承了parent是否為Deamon、優(yōu)先級和加載資源的contextClassLoader等。初始化完成后在堆內(nèi)存中等待運行。

啟動線程:線程對象在初始化完成后調(diào)用start()方法就可以啟動這個線程。start()方法的含義是:當前線程(parent線程)同步告知java虛擬機,只要線程規(guī)劃器空閑,應(yīng)立即調(diào)用start()方法的線程

理解中斷:中斷可以理解為線程的一個標志位屬性,它表示一個運行中的線程是否被其他線程進行了中斷操作。其他線程通過調(diào)用該線程的interrupt()方法對其進行中斷操作。

過期的suspend() / resume() / stop()(為什么過期了?)不建議使用的原因主要是以suspend()方法為例,在調(diào)用后,線程不會釋放已經(jīng)占用的資源(比如鎖),而是占用著資源進入睡眠狀態(tài),這樣容易引發(fā)死鎖問題

如何安全地終止線程?使用中斷。中斷操作是一種簡便的線程間的交互方式,而這種交互方式最適合用來取消或者停止任務(wù)。除了中斷以外還可以利用一個boolean變量來控制是否需要停止任務(wù)并終止該線程。

main線程通過中斷操作和cancle()方法均可使CountThread得以終止。這種通過標志位或者中斷操作的方式能夠使線程在終止時有機會去清理資源,而不是武斷地將線程停止,因此這種終止線程的方法更加安全,優(yōu)雅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容