關于多線程實作的兩種方式,一個Runnable,一個FutureTask和Callable配合使用。僅供大家參考。
/**
* Runnable 沒有傳回值,隻是多線程執行
*/
@Test
public void test1(){
// 線程池
ThreadPoolExecutor executor = ThreadPool.getExecutorPool();
Runnable runnable = new Runnable() {
@Override
public void run() {
// 寫邏輯
}
};
executor.execute(runnable);
}
/**
* Callable和Callable 配合使用,當多線程模式有傳回值
*/
@Test
public void test2() throws Exception {
ThreadPoolExecutor executor = ThreadPool.getExecutorPool();
FutureTask<JSONObject> futureTask = new FutureTask<>(new Callable<JSONObject>() {
@Override
public JSONObject call() throws Exception {
// 寫邏輯
return null;
}
});
executor.execute(futureTask);
//延時接收參數,給目前線程10秒的時間,
JSONObject jsonObject = futureTask.get(10, TimeUnit.SECONDS);
System.out.println(jsonObject);
}