带返回值的多线程实现
来源:互联网 发布:c语言考研题库 编辑:程序博客网 时间:2024/06/08 09:26
带返回值的多线程实现
package cn.thread;import java.util.concurrent.*;/** * @author Duoduo * @version 1.0 * @date 2017/4/19 15:49 */public class Test2 { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(2); Race tortoise = new Race("Tortoise", 1000L); Race rabbit = new Race("Rabbit", 300L); Future<Integer> tortoiseSubmit = executorService.submit(tortoise); Future<Integer> rabbitSubmit = executorService.submit(rabbit); Thread.sleep(5000); tortoise.setFlag(false); rabbit.setFlag(false); int torStep = tortoiseSubmit.get(); int rabStep = rabbitSubmit.get(); System.out.println("Tortoise run " + torStep + torStep + " step and Rabbit run " + rabStep + " step"); executorService.shutdownNow(); }}class Race implements Callable<Integer> { private String name; private Long time; private boolean flag = true; private int step = 0; public Race(String name, Long time) { this.name = name; this.time = time; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getTime() { return time; } public void setTime(Long time) { this.time = time; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } public int getStep() { return step; } public void setStep(int step) { this.step = step; } @Override public Integer call() throws Exception { while (flag) { Thread.sleep(time); step++; System.out.println("name " + name + " step " + step); } return step; }}
运行结果
name Rabbit step 1
name Rabbit step 2
name Rabbit step 3
name Tortoise step 1
name Rabbit step 4
name Rabbit step 5
name Rabbit step 6
name Tortoise step 2
name Rabbit step 7
name Rabbit step 8
name Rabbit step 9
name Tortoise step 3
name Rabbit step 10
name Rabbit step 11
name Rabbit step 12
name Rabbit step 13
name Tortoise step 4
name Rabbit step 14
name Rabbit step 15
name Rabbit step 16
name Tortoise step 5
name Rabbit step 17
Tortoise run 55 step and Rabbit run 17 step
0 0
- 带返回值的多线程实现
- 带返回值的多线程
- 带返回值的java多线程
- 带返回值的多线程示例
- 带返回值的多线程callable
- 带返回值的Python多线程方法
- 多线程 阻塞带返回值
- 定义带带返回值的方法
- 有返回值的多线程的实现:FutureTask+Callable
- 多线程实现的第三种有返回值的方法
- 带返回值的线程
- 带返回值的线程
- 带返回值的Intent
- 实现带参数的多线程的方式
- python多线程,获取多线程的返回值
- 带你走进多线程的世界(多线程实现方式)
- 带你走进多线程的世界(多线程实现方式)
- 带你走进多线程的世界(多线程实现方式)
- 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三)
- bpm系统渠道线索页面静态转动态
- Android 5.0 6.0 以及7.0新特性 MD风格 敏感权限 文件访问
- nginx的完整配置示例
- selenium使用遇到的问题
- 带返回值的多线程实现
- springMVC的全流程使用和分析
- 使用bootstrapvalidator的remote验证经验
- vim功能
- SQL Server Browser 服务
- 两道面试算法题
- 微信小程序开发中常见问题及解决方法
- 一次net::err_connection_reset的过程记录
- 字符串扩展