Java多執行緒五 後台執行緒

2021-07-23 23:56:02 字數 1957 閱讀 8831

下面是乙個後台執行緒的例子:

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執行緒池排程。...