多執行緒學習總結 執行緒常用的API

2021-09-12 14:56:24 字數 1453 閱讀 9146

(一)object類相關api(相關的方法一定是當前執行緒在獲取了對應的鎖物件才能呼叫,否則會丟擲異常)

方法功能

object.wait() 

鎖物件呼叫該方法使當前執行緒進入等待狀態,並立刻釋放鎖物件,直到被其他執行緒喚醒進入等鎖池。

object.wait(long)

鎖物件呼叫該方法使當前執行緒進入等待狀態,並立刻釋放鎖物件,直到被其他執行緒喚醒進入等鎖池。

object.wait(long,int)

和o.wait(long)方法一樣,如果int引數大於0則前面的long數字加1

object

隨機喚醒乙個處於等待中的執行緒(同乙個等待阻塞池中)

object.notifyall()

隨機喚醒乙個處於等待中的執行緒(同乙個等待阻塞池中)

(二)thread類的相關api

方法功能

備註thread.currentthread()

返回對當前執行緒物件的引用

同一段**對thread.currentthread()的呼叫,其返回值可能隨著對應著不同的執行緒(物件)

thread.sleep(long millis)

使當前執行緒睡眠

不會釋放鎖物件,使其他執行緒有執行的機會

thread.yield()

使當前執行緒主動放棄cpu的執行權

有可能立刻又被重新選中繼續執行,只可能給優先順序更高的執行緒機會

t.getid()

返回該執行緒的id

t.getname()

返回該執行緒的名字

t.getpriority()

返回該執行緒的優先順序

t.getstate()

返回該執行緒的狀態

t.getthreadgroup()

返回該執行緒所屬的執行緒組

t.interrupt()

將該執行緒中斷,如果執行緒正處在sleep()、join()、wait()方法中時 (也就是正在阻塞中)呼叫該方法,該方法會丟擲異常。

實際並不會中斷,只是將中斷標誌設定為true

t.interrupted()

檢測當前執行緒是否已經中斷

呼叫該方法後就將該執行緒的中斷標誌位設定位false,所以連續兩次呼叫該方法第二次肯定時false

t.isinterrupted()

檢測該執行緒是否已經中斷

對中斷標誌位不作處理

t.isalive()

檢測該執行緒是否還活著

t.isdaemon()

檢測該執行緒是否為守護執行緒

t.join()

等待相應的執行緒執行完畢

在a執行緒中呼叫b.join(),則a執行緒阻塞,直到b執行緒執行完

t.join(long millis)

等待相應的執行緒執行完畢

和上面的方法一樣,不過a執行緒阻塞的時間根據long的大小有關,如果達到設定的阻塞時間,就算b執行緒沒有執行完,a執行緒也會被喚醒。

執行緒屬性總結 執行緒的api屬性

執行緒屬性結構如下 typedef struct pthread attr t 屬性值不能直接設定,須使用相關函式進行操作,初始化的函式為pthread attr init,這個函式必須在pthread create函式之前呼叫。之後須用pthread attr destroy函式來釋放資源。執行緒...

執行緒學習總結(執行緒池)

1 使用jdk提供的執行緒池步驟 1 建立執行緒目標物件 runnable介面實現類 2 使用executors建立執行緒池物件,返回executorservice物件 3 執行緒池execute方法執行執行緒物件 4 執行緒池shutdown方法結束執行緒池中的執行緒 2 執行緒池型別 1 new...

Java總結 執行緒(三)

多執行緒程式設計專題 使用管道流實現執行緒間資料傳輸 public class test1 catch ioexception e thread t1 new sender pout thread t2 new receiver pin t1.start t2.start class sender ...