java编程思想笔记---并发Callable接口
来源:互联网 发布:上海网络教育医学院 编辑:程序博客网 时间:2024/05/18 00:10
public class TasksWithResult implements Callable<String> { private int id; public TasksWithResult(int id){ this.id=id; } //返回结果数据 @Override public String call() throws Exception { return "result:"+id; } public static void main(String[] args) { ExecutorService exec=Executors.newCachedThreadPool(); List<Future<String>>results=new ArrayList<Future<String>>(); for (int i = 0; i < 10; i++) { //使用exec.submit方法调用 results.add(exec.submit(new TasksWithResult(i))); } for (Future<String> future : results) { try { //检查任务是否已经完成 if (future.isDone()) { //调用get方法时,如果结果没有就绪,当前线程会阻塞,直至结果就绪 System.out.println(future.get()); } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }}
//callable示例:从每个任务中返回线程的睡眠时间
public class SleepTask implements Callable<String> { String name; public SleepTask(String name){ this.name=name; } @Override public String call(){ Random random=new Random(); int time=random.nextInt(100); try { TimeUnit.MILLISECONDS.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } return name+":"+time; } public static void main(String[] args) { ExecutorService exec=Executors.newCachedThreadPool(); List<Future<String>>futures=new ArrayList<Future<String>>(); for (int i = 0; i < 10; i++) { futures.add(exec.submit(new SleepTask("thread-"+(++i)))); } for (Future<String> future : futures) { try { System.out.println(future.get()); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } } }}
阅读全文
0 0
- java编程思想笔记---并发Callable接口
- 并发(java编程思想)笔记
- JAVA编程思想笔记--并发
- Java并发编程-Executor框架之Callable和Future接口
- Java并发编程-Executor框架之Callable和Future接口
- Java并发编程:Callable、Future
- JAVA学习笔记(三)-并发编程 Callable Future CompleableFuture
- java编程思想学习笔记:并发
- Java编程思想笔记—并发1
- java编程思想笔记---并发优先级
- java编程思想笔记-并发之死锁
- java编程思想笔记-并发之CountDownLatch
- java编程思想笔记-并发之CyclicBarrier
- java并发(五)Callable接口
- java编程思想笔记--接口部分一
- 《Java编程思想》学习笔记:接口
- Java编程思想接口笔记一
- java编程思想笔记-并发之并发锁(一)
- java内存模型总结
- 2015多校第九场 HDU 5402 Travelling Salesman Problem 棋盘染色法,构造
- easyUI的课程表练习
- 【MySQL基础】如何选择存储引擎
- OkHttp网络连接工具类
- java编程思想笔记---并发Callable接口
- Linux shell命令之cat
- Typescript I: 遍历Array的方法:for, forEach, every等
- Highcharts图表-ajax-获取json数据生成图表
- _STL使用技巧_(不定时更新)
- spring常见问题
- UVa 514(栈)铁轨
- UI自动化测试经验之谈(二)
- 设计模式之状态模式