基于Java Callable接口实现线程代码实例
实现Callable接口(jdk8新特性)
可以获得线程的返回值
*前两种方式没有返回值,因为run方法返回void
创建一个未来任务类对象 Futrue task = new Future(Callable<>);重写call()方法 可以使用匿名内部类方式
task.get()方法获取线程返回结果
get方法执行会导致当前方法阻塞 效率较低
代码如下
import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class Test_13 { public static void main(String[] args) { System.out.println(Thread.currentThread().getName() + 'begin'); FutureTask task = new FutureTask(new Callable() { @Override public Object call() throws Exception {System.out.println(Thread.currentThread().getName() + 'start');Thread.sleep(1000 * 5);int a = 100;int b = 200;System.out.println(Thread.currentThread().getName() + 'over');return a + b; } }); Thread thread = new Thread(task); thread.start(); try { System.out.println(task.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + 'end'); }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. 在Asp.net core项目中使用WebSocket2. ASP.NET MVC使用异步Action的方法3. python3.8.1+selenium实现登录滑块验证功能4. 利用FastReport传递图片参数在报表上展示签名信息的实现方法5. 浅谈springboot一个service内组件的加载顺序6. 使用vue-cli创建项目并webpack打包的操作方法7. matplotlib如何设置坐标轴刻度的个数及标签的方法总结8. SpringMVC+Jquery实现Ajax功能9. Python制作一个随机抽奖小工具的实现10. 使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例