package com.day03; import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; /** * @author anyan * @date 2021/5/15-22:03 */ /* 实现线程执行的第三种方式:实现Callable接口 */ public class FutureTaskTest { public static void main(String[] args) throws Exception { //新建未来任务对象,以匿名内部类的方式实现Callable接口 FutureTask ftt=new FutureTask(new Callable() { //call方法返回值为一个Obeject对象,相当于线程中的run()方法,区别在于返回值类型 @Override public Object call() throws Exception { System.out.println("call method begin"); Thread.sleep(1000*4); System.out.println("call method over"); int a=1; int b=2; return a+b; } }); Thread t=new Thread(ftt); t.start(); Object obj=ftt.get();//获取返回值类型对象 //此方式有个缺陷:未来任务线程在调用get()返回值方法时,会阻碍main 线程的执行 //以下代码必须先等待ftt.get()执行结束才能执行,而get()方法执行时间往往比较长。 System.out.println("执行结果返回值"+obj); System.out.println("main continue"); } }
实现线程的第三种方式
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SpringBoot整合Dubbo的第三种方式——XML配置 + @ImportResource
1.文档参照dubbo配置官方文档2.三个工程2.1 公共接口工程参考这篇文章:SpringBoot整合
spring boot java dubbo spring xml -
实现线程的三种方式
一种是extends Thread,好处是简单,缺点是占用继承资源一种是implements Runnable,好处是Java可以
多线程 Java java ide System -
00022.12 [第三种]转换流:OutputStreamWriter
系列文章目录文章目录系列文章目录前言一、OutputStreamWriter代码前言接上一篇InputStreamReader一
OutputStream 编码 写入文件 java Test -
00022.12 [第三种]转换流:InputStreamReader
转换流:InputStreamReader目录文章目录转换流:InputStreamReader目录一、是什么?一、是什
解码 Input InputStream StreamReader java -
@Import-给容器中加载bean的第三种方式
给容器中注册组件:1)包扫描+组件标注注解(@Controller/@Service/@Repository/@Comp
spring java mybatis spring boot bean