// 创建FutureTaskFutureTask<Integer> futureTask= new FutureTask<>(()-> 1+2);// 创建并启动线程Thread T1 = new Thread(futureTask);T1.start();// 获取计算结果Integer result = futureTask.get();
// 创建FutureTaskFutureTask<Integer> futureTask= new FutureTask<>(()-> 1+2);// 创建线程池ExecutorService es =Executors.newCachedThreadPool();// 提交FutureTaskes.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阻塞就可以了。
主要这个题目前后的询价没有顺序,有顺序的话如何优化性能,有点骚。
