在Java
後
提供了大量處理多線程的接口
以前只是簡單的使用其線程池
最近發現Future模式也有
只貼出了部分代碼
定義池
private static final ExecutorService worker = Executors
newFixedThreadPool(N)
// 線程池
private static List<Future<?》 futureList = new ArrayList<Future<?》()
// 工作中的線程
使用線程池
futureList
add(worker
submit(this))
結束線程
// 結束線程池中的線程執行(中斷)
public static void cancel() {
for (Future<?> f : futureList) {
f
cancel(true)
}
}
注
Future為線程的執行結果票據
當使用Callable方式執行時可以得到線程的執行結果f
get()
同時也可以控制某線程的結束和執行狀態
當使用Runnable方式執行時
得到結果是空
但也可以對線程進行控制
補充
應該是調用了線程的中斷方法Thread
currentThread()
interrupt()
但並不像stop方法那樣立即結束掉子線程
而是改變了中斷的信號量Thread
interrupted()
在阻塞的線程會拋出InterruptedException異常
但是在非阻塞的條件下子線程會繼續執行
需要在循環中自己判斷信號量來拋出異常
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27329.html