下面是乙個後台執行緒的例子:
public
class
******daemons
implements
runnable
} catch (interruptedexception e)
}public
static
void
main(string args) throws interruptedexception
system.out.println("all daemons started");
// timeunit.milliseconds.sleep(175);
}}
輸出結果:
all daemons started注意**裡有一行注釋,去掉注釋後的輸出結果(不是唯一)為
all daemons started為什麼會出現這種情況呢?thread[thread-6,5,main] com.yin.myproject.demo.concurrent.base.******daemons@6c1f4c89
thread[thread-3,5,main] com.yin.myproject.demo.concurrent.base.******daemons@7fa751a5
thread[thread-2,5,main] com.yin.myproject.demo.concurrent.base.******daemons@4b0f83a0
thread[thread-1,5,main] com.yin.myproject.demo.concurrent.base.******daemons@29e0f336
thread[thread-0,5,main] com.yin.myproject.demo.concurrent.base.******daemons@854a9ed
thread[thread-8,5,main] com.yin.myproject.demo.concurrent.base.******daemons@4de9fa9c
thread[thread-7,5,main] com.yin.myproject.demo.concurrent.base.******daemons@584d9551
thread[thread-4,5,main] com.yin.myproject.demo.concurrent.base.******daemons@74135af6
thread[thread-5,5,main] com.yin.myproject.demo.concurrent.base.******daemons@553c2e17
thread[thread-9,5,main] com.yin.myproject.demo.concurrent.base.******daemons@2b63218b
1. 首先,什麼是後台執行緒:所謂後台執行緒,是指程式執行的時候在後台提供一種通用服務的執行緒,並且這種執行緒並不屬於程式中不可或缺的部分. 2. 其次,與非後台執行緒之間的關係:後台執行緒並不是必須的,因此當所有的非後台執行緒結束時,程式也就終止,同時也會結束所有的後台執行緒.反過來說,只要有任何非後台執行緒還在執行,程式就不會終止.比如main()就是乙個非後台執行緒.
3. 最後,如何宣告乙個非後台執行緒,呼叫setdaemon(true)即可宣告該執行緒為後台執行緒.
4. 現在解釋一下不同輸出結果的原因.main()方法作為唯一乙個非後台執行緒,在沒有休眠(timeunit.milliseconds.sleep(175)被注釋)的情況下,一旦執行完成後程式就退出,後台執行緒也就隨之結束.而休眠的情況下,後台執行緒不會立即結束,後台執行緒得以建立並執行.
5. 在後台執行緒使用的過程中,還需要注意一點,又後台執行緒建立的執行緒也是後台執行緒.
6. 可以使用isdaemon()方法來判斷乙個執行緒是否為後台執行緒
java多執行緒學習四 後台執行緒
package myk 使用thread建立的執行緒預設情況下是前台執行緒,在程序中,只要有乙個前台執行緒未退出,程序就不會終止。主線程就是乙個前台執行緒。而後台執行緒不管執行緒是否結束,只要所有的前台執行緒都退出 包括正常退出和異常退出 後,程序就會自動終止。一般後台執行緒用於處理時間較短的任務,...
結束執行緒,後台執行緒多執行緒講解
執行緒生命週期 任何事物都是生命週期,執行緒也是,正常終止 當執行緒的run 執行完畢,執行緒死亡。使用標記停止執行緒 注意 stop方法已過時,就不能再使用這個方法。如何使用標記停止執行緒停止執行緒。開啟多執行緒執行,執行 通常是迴圈結構,只要控制住迴圈,就可以讓run方法結束,執行緒就結束。pa...
Java多執行緒學習筆記(五)執行緒池
一 執行緒池的基本類 executors 執行緒池工廠,通過 executors 可以取得乙個擁有特定功能的執行緒池。threadpoolexecutor 執行緒池,實現了executor 介面,因此通過這個介面,任何 runnable物件都可以被 threadpoolexecutor執行緒池排程。...