JAVA 多线程 Callable 与 FutureTask:有返回值的多线程
2024-09-04 06:34:34
java多线程中,如果需要有返回值,就需要实现Callable接口。
看例子:
先建立一个Dowork这个类,就是平时某个业务的实现
package com.ming.thread.one; import java.util.concurrent.Callable; /**
*
* 定义一个具体做事情work
* 线程运行完成后返回一个Stirng
* @author ming
*
*/
public class Dowork implements Callable<String> { private int i=10; @Override
public String call() throws Exception {
while(i>0){
System.out.println("i am work......"+i);
i--;
Thread.sleep(1000);
}
return "我做完了这次工作哦...";
} }
然后在我的测试类中,你可以看到要建立一个FutureTask这个任务调度,最后通过它可以获取线程执行的返回值.
package com.ming.thread.one; import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; /**
* 测试dowork的线程
* @author ming
*
*/
public class TestDowork { public static void main(String[] args) throws InterruptedException, ExecutionException {
Dowork dowork=new Dowork();
FutureTask<String> futureTask=new FutureTask<>(dowork);//新建一个检查dowork的线程任务
new Thread(futureTask).start();
while(!futureTask.isDone()){
System.out.println("检查工作释放做完...");
Thread.sleep(100);
}
String s=futureTask.get();
System.out.println("获取追后返回值哦..."+s);
}
}
ok,ok,ok。。。
最新文章
- php使用microtime(true)查看代码执行时间
- 实验一 cmd命令的编写
- pt_table_checksum对检查表的chunk大小的限制
- 积累一点ctf需要掌握的常见脚本知识
- Atiti &#160;attilax主要成果与解决方案与案例rsm版 v4
- mysql IP转换函数
- Linux下tftp安装与配置
- JQuery 对 Select option 的操作---转载
- 如何清除win7开机密码
- Mysql一主多从和读写分离配置简记
- POJ 3254 poj3254 Corn Fields
- linux内核启动参数
- S5PV210开发板刷机(SD卡uboot、串口+USB-OTG刷机方法)
- hdu 2123
- Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)
- 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验
- 彩色图像--色彩空间 YIQ 、YUV 、YCbCr 、YC1C2 和I1I2I3
- WINDOWS程序设计对话框加载显示bmp图像及刷新
- jsp中实现点击文件名称完成下载
- Apex 中的自定义迭代器