java 线程创建方式探究和对比
2022-05-03 14:59:05 5 举报
java 线程创建方式探究和对比
作者其他创作
大纲/内容
public interface Runnable { public abstract void run();}
执行start() --->执行native方法 start0() --->委托JVM申请一个OS线程并载入run() ---> 执行 run()
(1)能够取消异步执行中的任务。(2)判断异步任务是否执行完成。(3)获取异步任务完成后的执行结果。
限时阻塞
法3 实现 callable接口
编写的类是一个线程类,每次实例化相当于开启一个新线程(对同一个工作再执行一次)
1用于实现异步处理2实现callable和runnable的关联
最简单的JDK实现:FutureTask
编写的类跟runnable类作用一致,但是多了返回值和异常,而返回值和异常的获取往往通过异步获取get()
boolean isDone()
无返回,无异常
Start
通过父类实现的模板来执行线程启动过程
法4 线程池
当前线程阻塞等待异步结果
优势:可以解耦
有返回,有异常
法2 实现 runnable接口
优势:在解耦的基础上,又增加了异步任务管理的功能
在call方法中重写业务逻辑
run映射在Thread类中的Runnable target 属性中,通过Thread(Runnable)加载
通过Thread类实现的模板来执行线程启动过程
编写的类是一个执行类,每次实例化相当于开启一个执行过程(多一个工人,参与到同一个工作中)
至此,接口逻辑以及中转完成
End
在run方法中重写业务逻辑
如提交给FutureTask类:public class FutureTask<V> implements RunnableFuture<V>
Future接口
法1 继承 Thread类
功能
V get()
public interface Callable<V> { V call() throws Exception;}
boolean cancel()
由于最终也需要提交给Thread类才能映射给os线程进行执行,而对于业务逻辑Thread类只能接收Runnable接口,所以Callable需要和runnable建立关联,且逻辑上,callable应该是子类
0 条评论
下一页
为你推荐
查看更多