Java线程池运行状态监控实现解析
在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。
如果你想监控某一个线程池的执行状态,线程池执行类ThreadPoolExecutor也给出了相关的API,能实时获取线程池的当前活动线程数、正在排队中的线程数、已经执行完成的线程数、总线程数等。
总线程数=排队线程数+活动线程数+执行完成的线程数。
线程池使用示例:
privatestaticExecutorServicees=newThreadPoolExecutor(50,100,0L,TimeUnit.MILLISECONDS, newLinkedBlockingQueue(100000)); publicstaticvoidmain(String[]args)throwsException{ for(inti=0;i<100000;i++){ es.execute(()->{ System.out.print(1); try{ Thread.sleep(1000); }catch(InterruptedExceptione){ e.printStackTrace(); } }); } ThreadPoolExecutortpe=((ThreadPoolExecutor)es); while(true){ System.out.println(); intqueueSize=tpe.getQueue().size(); System.out.println("当前排队线程数:"+queueSize); intactiveCount=tpe.getActiveCount(); System.out.println("当前活动线程数:"+activeCount); longcompletedTaskCount=tpe.getCompletedTaskCount(); System.out.println("执行完成线程数:"+completedTaskCount); longtaskCount=tpe.getTaskCount(); System.out.println("总线程数:"+taskCount); Thread.sleep(3000); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。