為什么要使用多線程做裙?
1. 使用更多的處理器核心
2. 更快的響應時間
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方法將線程設置為Deamon線程吧碾。(注意其finally可能不會被執(zhí)行)
-->啟動和終止線程
通過調(diào)用線程的start()方法進行啟動凰盔。
構造線程:一個新構造的線程對象是由其parent線程來進行空間分配的,而child線程繼承了parent是否為Deamon倦春、優(yōu)先級和加載資源的contextClassLoader等户敬。初始化完成后在堆內(nèi)存中等待運行。
啟動線程:線程對象在初始化完成后調(diào)用start()方法就可以啟動這個線程睁本。start()方法的含義是:當前線程(parent線程)同步告知java虛擬機尿庐,只要線程規(guī)劃器空閑,應立即調(diào)用start()方法的線程
理解中斷:中斷可以理解為線程的一個標志位屬性添履,它表示一個運行中的線程是否被其他線程進行了中斷操作屁倔。其他線程通過調(diào)用該線程的interrupt()方法對其進行中斷操作。
過期的suspend() / resume() / stop()(為什么過期了?)不建議使用的原因主要是以suspend()方法為例暮胧,在調(diào)用后锐借,線程不會釋放已經(jīng)占用的資源(比如鎖),而是占用著資源進入睡眠狀態(tài)往衷,這樣容易引發(fā)死鎖問題
如何安全地終止線程钞翔?使用中斷。中斷操作是一種簡便的線程間的交互方式席舍,而這種交互方式最適合用來取消或者停止任務布轿。除了中斷以外還可以利用一個boolean變量來控制是否需要停止任務并終止該線程。
main線程通過中斷操作和cancle()方法均可使CountThread得以終止来颤。這種通過標志位或者中斷操作的方式能夠使線程在終止時有機會去清理資源汰扭,而不是武斷地將線程停止,因此這種終止線程的方法更加安全福铅,優(yōu)雅萝毛。