没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
在《 》一文高并发之——通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程
中我们深度分析了线程池执行任务的核心流程,在ThreadPoolExecutor类的addWorker
(Runnable, boolean)方法中,使用CAS安全的更新线程的数量之后,接下来就是创建新的Worker
线程执行任务,所以,我们先来分析下Worker类的源码。
Worker类分析
Worker类从类的结构上来看,继承了AQS(AbstractQueuedSynchronizer类)并实现了Runnable接
口。本质上,Worker类既是一个同步组件,也是一个执行任务的线程。接下来,我们看下Worker
类的源码,如下所示。
{private final class Worker extends AbstractQueuedSynchronizer implements Runnable
;private static final long serialVersionUID = 6138294804551838833L
//
Thread thread;final
//
Runnable firstTask;
//
completedTasks;volatile long
//Worker
Worker(Runnable firstTask) {
setState(- ); 1
.firstTask = firstTask;this
.thread = getThreadFactory().newThread( );this this
}
//Runnablerun()
{public void run()
//ThreadPoolExecutorrunWorker(Worker)
runWorker( );this
}
//
//state=0
//state=1
{protected boolean isHeldExclusively()
getState() != ;return 0
}
//AQS
{protected boolean tryAcquire( unused)int
(compareAndSetState( , )) {if 0 1
setExclusiveOwnerThread(Thread.currentThread());
;return true
}
;return false
}
//
{protected boolean tryRelease( unused)int
setExclusiveOwnerThread( );null
setState( );0
;return true
资源评论
北极象
- 粉丝: 1w+
- 资源: 345
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功