java初入多執行緒10

2021-08-09 15:55:28 字數 2643 閱讀 5840

執行緒阻塞工具類 :locksupport

public

class

locksupportdemo

@override

public

void

run() }}

public

static

void

main(string args) throws exception

}

public

class

locksupportintdemo

@override

public

void

run()

}system.out.println(getname() + "執行結束了");}}

執行緒復用:執行緒池

jdk 對執行緒池的使用。

jdk 提供了一套executor 框架, 本質就是執行緒池的使用。

- 從圖中可以看到threadpoolexecutor 表示乙個執行緒池, executors 類則扮演者執行緒池工廠的角色。 通過executors 可以獲得擁有特定功能的執行緒池。 我們在uml圖上 ,可以看到executor 介面 ,我們通過該介面 讓runnable 的物件可以被threadpoolexecutor 執行緒池排程。

- executor 框架提供了各種型別執行緒池。工廠方法如下:

1. newfixedthreadpool(int nthreads); 該方法返回的是乙個固定執行緒數量的執行緒池,該執行緒池的執行緒數量始終不變。 當有新任務提交過來的時候 ,執行緒池中有空閒執行緒,則立即執行。若沒有 ,則會把新的任務放到乙個佇列中。等待有空閒執行緒的時候就會執行佇列中的任務。

2. newsinglethreadexecutor(): 方法會返回乙個只有乙個執行緒的執行緒池。若多餘乙個任務被提交到該執行緒池。任務同樣會儲存在任務佇列中,等待執行緒空閒,按照先入先出的順序 執行佇列中的任務。

3. newcachedthreadpool() 方法: 方法會返回乙個根據實際情況調整執行緒數量的執行緒池。執行緒池的裡面的執行緒數量不確定。在任務提交過來的時候,若有空閒執行緒 則直接復用空閒執行緒,若所有執行緒都在使用,那麼會建立新的執行緒處理任務。所有執行緒結束後,將返回執行緒池進行復用。

4. newsingthreadscheduleexecutor(): 該方法會返回乙個scheduledexecutorservice物件,執行緒池大小為1, 這個執行緒池是在給定任務時間執行某任務的功能,或者是週期性執行任務

5. newsheduledthreadpool(): 方法會返回scheduledexecutorservice物件,該執行緒池可以指定執行緒數量。

- 對計畫任務執行緒池的使用:newsheduledthreadpool():

1. 主要方法如下 對該執行緒裡面的設定。

/**下面兩種方法 會在給定時間進行一次任務排程。**/

public scheduledfuture> schedule(runnable command,

long delay, timeunit unit);

public

scheduledfutureschedule(callablecallable, long delay, timeunit unit);

/*** 該方法是對任務週期性的排程 fixrate 是任務排程頻率是一致的**/

public scheduledfuture> scheduleatfixedrate(runnable command, long initialdelay, long period, timeunit unit);

/***同樣 週期性的排程 fixeddelay 是在任務完成一周週期後 再經過某個時間長度 才會執行任務**/

public scheduledfuture> schedulewithfixeddelay(runnable command,long initialdelay,

long delay, timeunit unit);

//**演示如下:

2. 還有一種情況如果任務執行時間超過我們所規定的時間 ,會怎麼樣,是聚集還是? 答案就是 會持續的當當前任務執行完成後立即執行下面的任務,。還有乙個如果任務出現異常,那麼該任務會被中斷 後續的任務也會被中斷,那麼需要我們最好異常處理。

java多執行緒初入3

程序的概念 程序 官方的語言是計算機中的程式,關於某資料集合上的一次執行活動。使系統進行資源分配和排程的基本單位單位,是作業系統的基本單位,是作業系統結構的基礎。在現在的執行緒設計的計算機結構中,程序是執行緒的容器,程式是指令資料及組織形式的描述,程序是程式的實體,但是總的來說 程序是執行緒的容器。...

java初入多執行緒7

同步控制 synchronized 擴充套件 重入鎖 public static reentrantlock looklock new reentrantlock public static int i 0 public void run catch exception e finally publ...

java初入多執行緒12

自定義執行緒建立 threadfactory 我們原先用的執行緒池threadpoolexecutor 裡面的執行緒都是從threadfactory 建立的。2.作用 我們可以根據自定義執行緒池,幫助我們跟蹤執行緒池建立了多少個執行緒,也可以自定義執行緒的名稱,組以及優先順序等資訊。甚至可以將所有執...