package sample;
import java.util.Random;
import java.util.concurrent.*;
public class threadsMain {
static class ReturnableTask implements Callable<Long> {
@Override
public Long call() throws Exception {
long startTime = System.currentTimeMillis();
System.out.println(Thread.currentThread().getName() + "线程运行开始。");
Thread.sleep(1000);
Random rd = new Random();
int temp = rd.nextInt(10);
for (int i = 0; i <temp; i++) {
System.out.println(i);
Thread.sleep(1000);
}
long used = System.currentTimeMillis() - startTime;
System.out.println(Thread.currentThread().getName() + "线程运行结束。");
return used;
}
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService ser= Executors.newFixedThreadPool(3);
ReturnableTask returnableTask = new ReturnableTask();
ReturnableTask returnableTask1 = new ReturnableTask();
ReturnableTask returnableTask2 = new ReturnableTask();
Future<Long> r1=ser.submit(returnableTask);
Future<Long> r2=ser.submit(returnableTask1);
Future<Long> r3=ser.submit(returnableTask2);
//这会阻塞获取call的值
System.out.println("运行结果是3:"+r3.get());
System.out.println("运行结果是1:"+r1.get());
System.out.println("运行结果是2:"+r2.get());
}
}
输出
pool-1-thread-1线程运行开始。
pool-1-thread-3线程运行开始。
pool-1-thread-2线程运行开始。
0
0
pool-1-thread-3线程运行结束。
运行结果是3:1014
1
1
2
2
3
3
4
4
5
5
6
pool-1-thread-2线程运行结束。
7
pool-1-thread-1线程运行结束。
运行结果是1:9115
运行结果是2:7087