// 创建FutureTask
FutureTask<Integer> futureTask
= new FutureTask<>(()-> 1+2);
// 创建并启动线程
Thread T1 = new Thread(futureTask);
T1.start();
// 获取计算结果
Integer result = futureTask.get();
// 创建FutureTask
FutureTask<Integer> futureTask
= new FutureTask<>(()-> 1+2);
// 创建线程池
ExecutorService es =
Executors.newCachedThreadPool();
// 提交FutureTask
es.submit(futureTask);
// 获取计算结果
Integer result = futureTask.get();
直接把Future对象放到线程池里,然后用任务的get来获取执行结果,这特么真是骚的可以啊。
// 向电商S1询价,并保存
r1 = getPriceByS1();
save(r1);
// 向电商S2询价,并保存
r2 = getPriceByS2();
save(r2);
// 向电商S3询价,并保存
r3 = getPriceByS3();
save(r3);
Future对象get的时候 通过LockSupport.lock 来阻塞。
课后思考
用三个线程去执行,每个线程的执行结果都get阻塞就可以了。
主要这个题目前后的询价没有顺序,有顺序的话如何优化性能,有点骚。