執行緒阻塞工具類 :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.作用 我們可以根據自定義執行緒池,幫助我們跟蹤執行緒池建立了多少個執行緒,也可以自定義執行緒的名稱,組以及優先順序等資訊。甚至可以將所有執...