在Java
一
任務就是一個實現了Runnable接口的類
創建的時候實run方法即可
二
通過ncurrent
Executors此包中所定義的 Executor
ExecutorService提供了管理終止的方法
executorService
通過工具類ncurrent
Executors此包中所定義的 Executor
比如
ExecutorService executorService = Executors
ExecutorService executorService = Executors
ExecutorService executorService = Executors
當將一個任務添加到線程池中的時候
三
executorService
四
package concurrent;
import ncurrent
import ncurrent
/**
* Created by IntelliJ IDEA
*
* @author leizhimin
*/
public class TestCachedThreadPool {
public static void main(String[] args) {
// ExecutorService executorService = Executors
ExecutorService executorService = Executors
// ExecutorService executorService = Executors
for (int i =
executorService
System
}
executorService
}
}
class TestRunnable implements Runnable {
public void run() {
System
while (true) {
try {
Thread
System
} catch (InterruptedException e) {
e
}
}
}
}
運行結果
************* a
************* a
pool
************* a
pool
pool
************* a
************* a
pool
pool
pool
pool
pool
pool
pool
pool
pool
pool
pool
pool
五
在Java
public interface Callable<V>返回結果並且可能拋出異常的任務
Callable 接口類似於 Runnable
Executors 類包含一些從其他普通形式轉換成 Callable 類的實用方法
Callable中的call()方法類似Runnable的run()方法
當將一個Callable的對象傳遞給ExecutorService的submit方法
同樣
遺憾的是
import java
import java
import ncurrent
/**
* Callable接口測試
*
* @author leizhimin
*/
public class CallableDemo {
public static void main(String[] args) {
ExecutorService executorService = Executors
List<Future<String>> resultList = new ArrayList<Future<String>>();
//創建
for (int i =
//使用ExecutorService執行Callable類型的任務
Future<String> future = executorService
//將任務執行結果存儲到List中
resultList
}
//遍歷任務的結果
for (Future<String> fs : resultList) {
try {
System
} catch (InterruptedException e) {
e
} catch (ExecutionException e) {
e
} finally {
//啟動一次順序關閉
executorService
}
}
}
}
class TaskWithResult implements Callable<String> {
private int id;
public TaskWithResult(int id) {
this
}
/**
* 任務的具體過程
*
* @return
* @throws Exception
*/
public String call() throws Exception {
System
//一個模擬耗時的操作
for (int i =
return
}
}
運行結果
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
call()方法被自動調用
Process finished with exit code
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27417.html