<p></p>
讯享网
前两种线程创建方式都存在的一个问题:
假如线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果。
怎么解决这个问题?
JDK5.0提供了Callable接口和FutureTask类来实现(多线程的第三种创建方法)。
这种方式最大的优点:可以返回线程执行完毕后的结果。
多线程的第三种创建方式:利用Callable接口,FutureTask类来实现。
1)创建任务对象;
定义一个类实现Callable接口,重写call方法,封装要做的事情,和要返回的数据。
把Callable类型的对象封装成FutureTask(线程任务对象)。
2)把线程任务对象交给Thread对象。
3)调用Thread对象的start方法启动线程。
4)线程执行完毕后,通过FutureTask对象的get方法去获取线程任务执行的结果。
MyCallable:
讯享网
测试类:
运行结果:
如果上面的线程还没有执行完毕,这里的代码会暂停,等待上面线程执行完毕后才会获取结果。

线程创建方式三的优缺点:
优点:线程任务类只是实现接口,可以继续继承类和实现接口,扩展性强;可以在线程执行完毕后去获取线程执行的结果。
缺点:编码复杂一点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146560.html