
说明
1、Worker是ThreadPoolexecutor的内部类,主要用于维持线程执行任务的中断控制状态。
2、在实现Runnable接口的同时继承AQS,实现Runnable接口意味着Worker是线程。
实例
privatefinalclassWorker
extendsAbstractQueuedSynchronizer
implementsRunnable{
/**
*Thisclasswillneverbeserialized,butweprovidea
*serialVersionUIDtosuppressajavacwarning.
*/
privatestaticfinallongserialVersionUID=6138294804551838833L;
/**Threadthisworkerisrunningin.Nulliffactoryfails.*/
//执行任务的线程
finalThreadthread;
/**Initialtasktorun.Possiblynull.*/
//执行的任务
RunnablefirstTask;
/**Per-threadtaskcounter*/
volatilelongcompletedTasks;
/**
*CreateswithgivenfirsttaskandthreadfromThreadFactory.
*@paramfirstTaskthefirsttask(nullifnone)
*/
Worker(RunnablefirstTask){
//新建线程的时候,设置state-1是为了防止线程还未执行时(线程只有在执行的时候才会被中断),就被//其它线程显式调用shutdown方法中断了,因为中断是要判断state大于等于0才会中断
setState(-1);
this.firstTask=firstTask;
//新建了一个线程
this.thread=getThreadFactory().newThread(this);
}
/**DelegatesmainrunlooptoouterrunWorker*/
publicvoidrun(){
runWorker(this);
}
以上就是java Worker类的用法,希望对大家有所帮助。更多Java学习指路:Java基础
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















































暂无评论内容