Skip to content

Commit b791849

Browse files
author
zhangml
committed
futureTask
1 parent 819a3b5 commit b791849

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.example.concurrency.futureTask;
2+
3+
import com.example.concurrency.threadPool.ThreadPoolBuilder;
4+
import com.example.concurrency.threadPool.ThreadPoolUtil;
5+
6+
import java.util.concurrent.FutureTask;
7+
import java.util.concurrent.ThreadPoolExecutor;
8+
9+
/**
10+
* 描述:
11+
* FutureTaskEx
12+
*
13+
* @author zed
14+
* @since 2019-06-18 4:52 PM
15+
*/
16+
public class FutureTaskEx {
17+
/**
18+
* FutureTask由线程池执行
19+
*/
20+
private static void exeForPool(){
21+
// 创建 FutureTask
22+
FutureTask<Integer> futureTask = new FutureTask<>(()-> 1+2);
23+
// 创建线程池
24+
ThreadPoolExecutor executor = ThreadPoolBuilder.fixedPool().build();
25+
26+
try{
27+
// 提交 FutureTask
28+
executor.submit(futureTask);
29+
// 获取计算结果
30+
Integer result = futureTask.get();
31+
System.out.println(result);
32+
}catch(Exception e){
33+
e.printStackTrace();
34+
}finally {
35+
ThreadPoolUtil.gracefulShutdown(executor,1);
36+
37+
}
38+
}
39+
40+
/**
41+
* FutureTask由线程处理
42+
*/
43+
private static void exeForThread(){
44+
// 创建 FutureTask
45+
FutureTask<Integer> futureTask = new FutureTask<>(()-> 1+2);
46+
// 创建并启动线程
47+
Thread T1 = new Thread(futureTask);
48+
T1.start();
49+
// 获取计算结果
50+
try{
51+
Integer result = futureTask.get();
52+
System.out.println(result);
53+
}catch (Exception e){
54+
e.printStackTrace();
55+
}
56+
57+
}
58+
59+
public static void main(String[] args) {
60+
exeForPool();
61+
exeForThread();
62+
}
63+
}
64+

0 commit comments

Comments
 (0)