在java中,实现线程的方式不仅仅有runnable接口,Thread类,还有callable接口,但是runnable接口和thread类中,都是没有返回值的。

但是在callable接口的实现中,是可以有值返回的;
经过代码的编写,有两种方法可以取出返回值
具体方法请看如下代码


分别使用 FutureTask 和 线程池完成回调。
源码分析

首先简历线程池可以发现,底层实现是有同步队列的,也就是说线程等待是在队列中完成的
ThreadFactory,线程的制造工厂,线程池等的线程创建都和这个类有关
ThreadPoolExecutor 导入的包

里面可以看到有abstractqueuedSynchronizer aqs,和lock锁,还有condition条件控制类
接下来进一步观察线程池是底层怎么实现线程的切换,和锁的应用
网友评论