说明
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
暂无评论内容