1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| package com.example.login;
import com.google.common.util.concurrent.*;
import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.Executors;
public class TestListenableFuture2 { final static ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
public static void main(String[] args) throws Exception { Long t1 = System.currentTimeMillis(); ListenableFuture<Boolean> booleanTask = service.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return true; } });
Futures.addCallback(booleanTask, new FutureCallback<Boolean>() { @Override public void onSuccess(Boolean result) { System.err.println("BooleanTask: " + result); }
@Override public void onFailure(Throwable t) { } });
ListenableFuture<String> stringTask = service.submit(new Callable<String>() { @Override public String call() throws Exception { return "Hello World"; } });
Futures.addCallback(stringTask, new FutureCallback<String>() { @Override public void onSuccess(String result) { System.err.println("StringTask: " + result); }
@Override public void onFailure(Throwable t) { } });
ListenableFuture<Integer> integerTask = service.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { return new Random().nextInt(100); } });
Futures.addCallback(integerTask, new FutureCallback<Integer>() { @Override public void onSuccess(Integer result) { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.err.println("IntegerTask: " + result); }
@Override public void onFailure(Throwable t) { } });
System.err.println("time: " + (System.currentTimeMillis() - t1)); service.shutdown(); } }
|