Skip to content

Commit 732a43f

Browse files
committed
第四周作业2:使用completableFuture
1 parent 7cb3a61 commit 732a43f

1 file changed

Lines changed: 27 additions & 29 deletions

File tree

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,51 @@
11
package java0.conc0303;
22

3+
import java.util.concurrent.CompletableFuture;
4+
35
/**
46
* 本周作业:(必做)思考有多少种方式,在main函数启动一个新线程或线程池,
57
* 异步运行一个方法,拿到这个方法的返回值后,退出主线程?
68
* 写出你的方法,越多越好,提交到github。
7-
*
9+
* <p>
810
* 一个简单的代码参考:
911
*/
1012
public class Homework03 {
11-
13+
1214
public static void main(String[] args) throws Exception {
13-
14-
long start=System.currentTimeMillis();
15+
16+
long start = System.currentTimeMillis();
1517
// 在这里创建一个线程或线程池,
1618
// 异步执行 下面方法
17-
// CountDownLatch countDownLatch = new CountDownLatch(1);
18-
// ExecutorService executorService = Executors.newCachedThreadPool();
19-
20-
// Future<Integer> future = executorService.submit(() -> sum());
21-
// executorService.execute( () -> {
22-
// int result = sum();
23-
// System.out.println("异步计算结果为:"+result);
24-
// countDownLatch.countDown();
25-
// });
26-
// executorService.shutdown();
27-
// countDownLatch.await();
28-
Thread t1 = new Thread(() -> {
29-
int result = sum();
30-
System.out.println("异步计算结果为:"+result);
31-
});
32-
t1.start();
33-
t1.join();
19+
// CountDownLatch countDownLatch = new CountDownLatch(1);
20+
// ExecutorService executorService = Executors.newCachedThreadPool();
21+
22+
// Future<Integer> future = executorService.submit(() -> sum());
23+
// executorService.execute( () -> {
24+
// int result = sum();
25+
// System.out.println("异步计算结果为:"+result);
26+
// countDownLatch.countDown();
27+
// });
28+
// executorService.shutdown();
29+
// countDownLatch.await();
30+
int result = CompletableFuture.supplyAsync(()-> sum()).join();
31+
3432
//int result = sum(); //这是得到的返回值
3533
//int result = future.get();
3634
// 确保 拿到result 并输出
37-
//System.out.println("异步计算结果为:"+result);
38-
39-
System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms");
40-
35+
System.out.println("异步计算结果为:"+result);
36+
37+
System.out.println("使用时间:" + (System.currentTimeMillis() - start) + " ms");
38+
4139
// 然后退出main线程
4240
}
43-
41+
4442
private static int sum() {
4543
return fibo(36);
4644
}
47-
45+
4846
private static int fibo(int a) {
49-
if ( a < 2)
47+
if (a < 2)
5048
return 1;
51-
return fibo(a-1) + fibo(a-2);
49+
return fibo(a - 1) + fibo(a - 2);
5250
}
5351
}

0 commit comments

Comments
 (0)