執行緒池
newfixedthreadpool()//執行緒池中的執行緒數量始終不變,新任務提交,有空閒執行緒立馬執行,否則會將任務加入到任務佇列,有執行緒空閒時,便處理在任務佇列中的任務。
newsinglethreadexecutor()
//執行緒池中的執行緒數量為1,新任務提交,執行緒空閒則立馬執行,否則會將任務加入到任務佇列,待執行緒空閒時,便處理在任務佇列中的任務。
newcachedtheadpool()
//可根據實際情況調整執行緒池數量,優先使用空閒執行緒,待無空閒執行緒,又有新任務時,建立新的執行緒執行。
public
static
void
main(string args) catch (interruptedexception e) });
}executorservice.shutdown();
}//輸出
//11
//12
//13
//14
//15
//13
//14
//15
//11
//12
計畫任務newsinglethreadscheduledexecutor()//執行緒池中的執行緒數量始終未1,在指定時間執行某任務
newscheduledthreadpool()
//執行緒池可以指定執行緒數量
//scheduleatfixedrate
//每隔一定頻率執行
//schedulewithfixeddelay
//每隔乙個執行時間間隔後執行
public
static
void
main(string args) catch (interruptedexception e)
},0,2, timeunit.seconds);
}//輸出1
//1495982410
//1495982414
//1495982418
//1495982422
//輸出2
//1495982354
//1495982360
//1495982366
//1495982372
jdk中concurrent包下的執行緒安全集合
concurrenthashmap 執行緒安全的map concurrentskiplistmap執行緒安全且具有排序功能的map concurrentskiplistset執行緒安全且具有排序功能的set copyonwritearraylist執行緒安全能夠在遍歷的過程中對list進行操作 包括...
執行緒池實現「執行緒復用」的原理?
執行緒復用原理 我們知道執行緒池會使用固定數量或可變數量的執行緒來執行任務,但無論是固定數量或可變數量的執行緒,其執行緒數量都遠遠小於任務數量,面對這種情況執行緒池可以通過執行緒復用讓同乙個執行緒去執行不同的任務,那麼執行緒復用背後的原理是什麼呢?執行緒池建立新執行緒的時機和規則 如流程圖所示,當提...
執行緒池執行緒復用原理(原始碼詳解)
假設有50個任務,執行緒池設定核心執行緒數為3,等待佇列數設定為5,那麼執行這50個任務時,這3個核心執行緒和2個非核心執行緒就會不停的復用,進行任務的執行。2.1執行緒池的工作流程 當任務提交之後,執行緒池首先會檢查當前執行緒數,如果當前的執行緒數小於核心執行緒數 corepoolsize 則新建...