11package tool .guava ;
22
3+ import com .google .common .base .Function ;
34import com .google .common .util .concurrent .*;
5+ import org .checkerframework .checker .nullness .qual .Nullable ;
46import org .junit .jupiter .api .Test ;
57
68import java .util .concurrent .ExecutorService ;
79import java .util .concurrent .Executors ;
810import java .util .concurrent .TimeUnit ;
11+ import java .util .stream .IntStream ;
912
1013
1114/**
12- *
1315 * ListeningExecutorService 是Guava对Java标准库ExecutorService的扩展,
1416 * 1、支持回调机制:不再需要手动get()等待结果,任务完成后自动触发回调
1517 * 2、返回ListenableFuture:支持链式操作
2123public class ListeningExecutorServiceTest {
2224
2325
26+ ExecutorService executorService = Executors .newFixedThreadPool (8 );
2427
28+ ListeningExecutorService listeningExecutorService = MoreExecutors .listeningDecorator (executorService );
2529
26- @ Test void t1 (){
27-
28- ExecutorService executorService = Executors .newFixedThreadPool (8 );
2930
30- ListeningExecutorService listeningExecutorService = MoreExecutors .listeningDecorator (executorService );
31+ @ Test
32+ void t1 () {
3133
3234
3335 ListenableFuture <?> future = listeningExecutorService .submit (() -> {
@@ -44,6 +46,7 @@ public class ListeningExecutorServiceTest {
4446 public void onSuccess (Object result ) {
4547 System .out .println ("Task success" );
4648 }
49+
4750 @ Override
4851 public void onFailure (Throwable t ) {
4952 System .out .println ("Task fail" );
@@ -59,7 +62,31 @@ public void onFailure(Throwable t) {
5962 }
6063
6164
65+ @ Test
66+ void v2 () {
67+ ListenableFuture <String > str = listeningExecutorService .submit (() -> {
68+ System .out .println ("123" );
69+ return "123" ;
70+ });
71+ ListenableFuture <Integer > transform = Futures .transform (str , new Function <String , Integer >() {
72+ @ Override
73+ public Integer apply (String input ) {
74+ return Integer .valueOf (input );
75+ }
76+ }, MoreExecutors .directExecutor ());
77+
78+ Futures .addCallback (transform , new FutureCallback <Integer >() {
79+ @ Override
80+ public void onSuccess (@ Nullable Integer result ) {
81+ System .out .println ("Task success " + result );
82+ }
83+ @ Override
84+ public void onFailure (Throwable t ) {
85+ System .out .println ("Task fail" );
86+ }
87+ }, MoreExecutors .directExecutor ());
6288
89+ }
6390
6491
6592}
0 commit comments