Thread 緩存
join 讓join的線程優先執行,再次加入的,等待join執行完了以後執行操作系統
interrupt線程
(1)、若是線程處於被阻塞狀態(sleep,wait,join) ,當即退出被阻塞狀態,並拋出interruptedException異常;隊列
(2)、若是線程正處於活動狀態,只能告訴線程要中斷了,設置中斷標誌,並不能真正中斷,真正中斷須要邏輯配合;資源
suspend, resumeit
suspend 掛起io
resume 復活 若是再suspend以前調用,則不起做用thread
不經常使用,由於掛起不釋放線程鎖,佔用資源,若是resume在suspend以前調用,就一直處於掛起狀態,形成死鎖線程池
stop 中止當前線程,不會當即釋放資源yield
Sleep 釋放線程鎖
yield 禮讓,讓出本身的CPU讓其它線程優先執行
Object
notify,notifyall,wait
線程池(ExecutorService)
1. newSingleThreadExecutor
建立一個單線程的線程池。這個線程池只有一個線程在工做,也就是至關於單線程串行執行全部任務。若是這個惟一的線程由於異常結束,那麼會有一個新的線程來替代它。此線程池保證全部任務的執行順序按照任務的提交順序執行。
2.newFixedThreadPool
建立固定大小的線程池。每次提交一個任務就建立一個線程,直到線程達到線程池的最大大小。線程池的大小一旦達到最大值就會保持不變,若是某個線程由於執行異常而結束,那麼線程池會補充一個新線程。
3. newCachedThreadPool
建立一個可緩存的線程池。若是線程池的大小超過了處理任務所須要的線程,
那麼就會回收部分空閒(60秒不執行任務)的線程,當任務數增長時,此線程池又能夠智能的添加新線程來處理任務。此線程池不會對線程池大小作限制,線程池大小徹底依賴於操做系統(或者說JVM)可以建立的最大線程大小。
4.newScheduledThreadPool
建立一個大小無限的線程池。此線程池支持定時以及週期性執行任務的需求。
ThreadPoolExecutor
corePoolSize - 池中所保存的線程數,包括空閒線程。
maximumPoolSize-池中容許的最大線程數。
keepAliveTime - 當線程數大於核心時,此爲終止前多餘的空閒線程等待新任務的最長時間。
unit - keepAliveTime 參數的時間單位。
workQueue - 執行前用於保持任務的隊列。此隊列僅保持由 execute方法提交的 Runnable任務。
threadFactory - 執行程序建立新線程時使用的工廠。
handler - 因爲超出線程範圍和隊列容量而使執行被阻塞時所使用的處理程序。
ThreadPoolExecutor是Executors類的底層實現。