关于线程池的疑问

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

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务