永发信息网

怎样获取线程池中工作线程的数量

答案:2  悬赏:10  手机版
解决时间 2021-03-08 13:07
  • 提问者网友:谁的错
  • 2021-03-07 14:38
怎样获取线程池中工作线程的数量
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-03-07 15:00
您好,很高兴为您解答。

Map map=Thread.getAllStackTraces();
System.out.println(map.size());
把这两句话放在需要的方法里里,运行就可以得到结果了。
下面这句话是java api的解释:
Thread类。
getAllStackTracespublic static Map getAllStackTraces()返回所有活动线程的堆栈跟踪的一个映射。映射键是线程,而每个映射值都是一个 StackTraceElement 数组,该数组表示相应 Thread 的堆栈转储。返回的堆栈跟踪的格式都是针对 getStackTrace 方法指定的。
在调用该方法的同时,线程可能也在执行。每个线程的堆栈跟踪仅代表一个快照,并且每个堆栈跟踪都可以在不同时间获得。如果虚拟机没有线程的堆栈跟踪信息,则映射值中将返回一个零长度数组。
如果有安全管理器,则通过 RuntimePermission("getStackTrace") 权限和 RuntimePermission("modifyThreadGroup") 权限调用其 checkPermission 方法,查看是否可以获得所有线程的堆栈跟踪。

希望以上信息对你有帮助。
全部回答
  • 1楼网友:青灯有味
  • 2021-03-07 15:31
线程池中的线程称为worker,它是功能就是生产者-消费都模式中的消费者,有个同步锁在请求队列上等待请求数据,我们只要把数据放入请求队列中它就能开始工作,当没有数据时又回到那么锁上等待,也就是那个 run 方法是应该进行一个循环的,一般情况下是根据一个退出条件来决定是否退出,如果不退出那就是一个无限循环。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯