Samples JDK
Test.java
1 package com.freemindcafe.concurrency.sample2;
2 
3 import java.util.Arrays;
4 import java.util.List;
5 import java.util.concurrent.Callable;
6 import java.util.concurrent.ExecutionException;
7 import java.util.concurrent.ExecutorService;
8 import java.util.concurrent.Future;
9 import java.util.concurrent.LinkedBlockingQueue;
10 import java.util.concurrent.ThreadPoolExecutor;
11 import java.util.concurrent.TimeUnit;
12 
13 import junit.framework.Assert;
14 
15 public class Test {
16 
17  @org.junit.Test
18  public void simple_pool_with_callable() throws InterruptedException, ExecutionException{
19  Callable<Integer> c1 = ()->1;
20  Callable<Integer> c2 = ()->1;
21 
22  ExecutorService executor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.HOURS, new LinkedBlockingQueue<Runnable>());
23  Future<Integer> f1 = executor.submit(c1);
24  Future<Integer> f2 = executor.submit(c2);
25  executor.shutdown();
26  System.out.println(executor.awaitTermination(1, TimeUnit.MINUTES));
27 
28  Assert.assertEquals(2, f1.get()+f2.get());
29 
30  }
31 
32  @org.junit.Test
33  public void invoke_all() throws InterruptedException, ExecutionException{
34  Callable<Integer> c1 = ()->1;
35  Callable<Integer> c2 = ()->1;
36 
37  ExecutorService executor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.HOURS, new LinkedBlockingQueue<Runnable>());
38  List<Future<Integer>> results = executor.invokeAll(Arrays.asList(c1,c2));
39  executor.shutdown();
40  System.out.println(executor.awaitTermination(1, TimeUnit.MINUTES));
41 
42  Assert.assertEquals(2, results.stream().mapToInt(f->{try{return f.get();}catch(Exception ex){return -1;}}).sum());
43 
44  }
45 
46  //[FIXME]
47  //Why does awaitTermination wait for 10 seconds
48  @org.junit.Test
49  public void test3() throws InterruptedException, ExecutionException{
50  Callable<Integer> c1 = () -> {Thread.sleep(10000);return 1;};
51  Callable<Integer> c2 = ()->1;
52 
53  ExecutorService executor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.HOURS, new LinkedBlockingQueue<Runnable>());
54  List<Future<Integer>> results = executor.invokeAll(Arrays.asList(c1,c2));
55  executor.shutdown();
56  System.out.println(executor.awaitTermination(1, TimeUnit.SECONDS));
57  System.out.println("hi");
58 
59  Assert.assertEquals(2, results.stream().mapToInt(f->{try{return f.get();}catch(Exception ex){return -1;}}).sum());
60 
61  }
62 
63 }