package com.entel.research;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CallableAndFuture
{
public static void main(String[] args)
{
ExecutorService threadPool = Executors.newFixedThreadPool(5);
CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(
threadPool);
for (int i = 1; i <= 5; i++)
{
final int seq = i;
completionService.submit(new Callable<Integer>()
{
public Integer call() throws Exception
{
Thread.sleep(new Random().nextInt(1000));
return seq;
}
});
}
for (int i = 0; i < 5; i++)
{
try
{
System.out.println(completionService.take().get());
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (ExecutionException e)
{
e.printStackTrace();
}
}
threadPool.shutdown();
System.out.println("The End");
}
}
Callable有返回值的线程
最新推荐文章于 2023-01-08 18:50:05 发布