关于线程池的疑问

首先是线程池中的线程如何实现复用,即一个线程执行完后怎么变成了空闲线程,二是能否对一个线程start两次,如果想某个线程执行完后再次执行,如何做?求各位大佬解答
全部评论
我只针对Java的线程池来说。 第一、Java的线程池是通过阻塞队列来完成线程复用的,如果阻塞都列不为空,线程从阻塞队列取出Runable运行,运行完毕后,继续到阻塞队列去取新任务,如果阻塞队列为空,就阻塞线程。 懂了吧?所谓的线程复用,就是不停的从阻塞队列取任务,如果没有新任务就阻塞。至于阻塞队列的实现,其实就是加锁与线程同步的问题。 第二、一个线程不能start两次。
点赞 回复 分享
发布于 2017-11-03 14:46
最简单的就是 线程创建后都等待某个信号,竞争任务队列 当前任务执行完了就循环继续等待信号 竞争任务队列
点赞 回复 分享
发布于 2017-11-02 12:14

相关推荐

05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务