執行緒的啟動和結束

2021-10-01 11:55:28 字數 1352 閱讀 3420

生命週期:建立 ->就緒->執行(阻塞)->終止

狀態標識:new ,runnable ,running ,(blocked,timed waiting,wating) ,terminated

wating :呼叫wait,join,notyfy

blocked:synchroinzed ,lock

timed waiting :sleep(100),timeunit

1.繼承thread 

2.實現runnable介面

3.實現callable 介面 返回future

在建立乙個執行緒時,我們重寫run(),但是我啟動乙個執行緒我們卻呼叫了start(),那麼他們之間肯定有一定的聯絡,檢視原始碼發現,start()方法呼叫了本地方法start0().
private

native

void

start0()

;

在開始執行這個執行緒時,jvm 將會呼叫該執行緒的run() 方法,換言之,run方法是被jni 方法start0() 呼叫的。

1.執行緒結束生命週期正常結束

執行緒執行時完成自己的使命後,就會正常的退出。

2.捕獲中斷訊號關閉執行緒

thread t  =

newthread((

)->

system.out.

println

("i will be exiting")}

);t.

start()

; timeunit.minutes.

sleep(2

);t.

interrupt()

;//中斷執行緒

1)interrupt() 中斷執行緒,中斷乙個執行緒不代表乙個執行緒的生命週期結束。僅僅是打斷了當前執行緒的阻塞狀態.(一旦執行緒在阻塞狀態下被打斷,會丟擲interruptedexception 異常)

2)isterrupted() 判斷當前執行緒是否被中斷。

3)interrupted() 判斷當前執行緒是否被中斷,會進行乙個復位操作。直接擦除interrupt標識。

3.使用volatile 修飾乙個flag 標識

private

static

volatile flag =

false

; thread t=

newthread((

)->})

; t.

start()

; flag=

true

;

C 啟動和結束乙個執行緒

在程式執行中會遇到啟動本軟體的exe問,或者啟用其它的exe檔案,已達到執行某些操作的作用。下面是兩種最常見的啟動exe檔案。1 呼叫系統dll使用其提供的方法。引用的dll,csharp view plain copy print dllimport kernel32.dll public sta...

Python啟動和結束程序

import os 通過這一條語句即可開啟指定的程式 linux下需要的依賴 import os windows下需要的依賴 import wmi 需要結束的程序名稱 processname chrome.exe windows環境情況下結束程序 c wmi.wmi for process in c...

UVM平台啟動和結束

uvm中通過objection機制來控制驗證平台的關閉。在每個phase中,uvm會檢查是否有objection被提起 raise objection 如果有,那麼等待這個objection被撤銷 drop objection 後停止 如果沒有,則馬上結束當前phase。raise objectio...