File tree 1 file changed +64
-0
lines changed
src/main/java/com/example/concurrency/futureTask 1 file changed +64
-0
lines changed Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments