在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。
如果你想监控某一个线程池的执行状态,线程池执行类ThreadPoolExecutor也给出了相关的API,能实时获取线程池的当前活动线程数,正在排队中的线程数,已经执行完成的线程数,总线程数等。
总线程数=排队线程数+活动线程数+执行完成的线程数。
线程池使用示例:
私有静态ExecutorService es=new ThreadPoolExecutor (100, 0 l, TimeUnit.MILLISECONDS, 新的LinkedBlockingQueue(100000)); 公共静态void main (String [] args){抛出异常 for (int i=0;我& lt;100000;我+ +){ es.execute (()→{ System.out.print (1); 尝试{ thread . sleep (1000); }捕捉(InterruptedException e) { e.printStackTrace (); } }); } ThreadPoolExecutor tpe=((ThreadPoolExecutor) es); 而(真){ System.out.println (); .size int queueSize=tpe.getQueue () (); system . out。println(“当前排队线程数:”+ queueSize); int activeCount=tpe.getActiveCount (); system . out。println(“当前活动线程数:”+ activeCount); 长completedTaskCount=tpe.getCompletedTaskCount (); system . out。println(“执行完成线程数:”+ completedTaskCount); 长taskCount=tpe.getTaskCount (); system . out。println(“总线程数:“+ taskCount); thread . sleep (3000); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。