import java.util.Iterator;import java.util.Map;/* * 获取当前所有线程 的两种方法 * (线程1因为 已经早早执行结束,所以下面获取的时候没有了) * (线程2在延时中,所以能获取到) *  */public class Runthread {public static void main(String[] args) {//线程1new Thread(){@Overridepublic void run() {System.out.println("这是线程1的run1111111111");}}.start();//线程2new Thread(){@Overridepublic void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("这是线程2的run222222222");}}.start();//获取当前所有线程 堆栈System.err.println("方法111-------------------");ThreadGroup group = Thread.currentThread().getThreadGroup();  ThreadGroup topGroup = group;  //遍历线程组树,获取根线程组  ( 加上这段那么与方法2效果一样)//while (group != null) {  //topGroup = group;  //group = group.getParent();  //}  //激活的线程数加倍  int estimatedSize = topGroup.activeCount() * 2;  Thread[] slackList = new Thread[estimatedSize];  // 获取根线程组的所有线程  int actualSize = topGroup.enumerate(slackList);  // copy into a list that is the exact size  Thread[] list = new Thread[actualSize];  System.arraycopy(slackList, 0, list, 0, actualSize);  System.out.println("当前线程数: " + list.length);  for (Thread thread : list) {  System.out.println(thread.getName());  }  System.err.println("方法22-----------------------------");Map map=Thread.getAllStackTraces(); //也可以mapSystem.out.println("当前线程数:"+map.size());Iterator it=map.keySet().iterator();while (it.hasNext()) {Thread t=(Thread) it.next(); //System.out.println(t.getName());}System.err.println("-----------------------------");}}




转:

http://www.asni.cn/ZhiYan/archives/384.html  java常用对象Map集合中关于取出元素的说明

http://blog.csdn.net/daditao/article/details/19811669  获取 Java VM 中当前运行的所有线程

http://zhidao.baidu.com/link?url=RzmIMVXL7bWmSGQxFtVPzgT2VXQIxrCB5hTovZ77rNst9_u2CbFbxRjQWrehDYuYM-8Ck7uYaJH6h2TQTzRx1q

百度知道解释。很多方法。


sxd901026  | 五级 Map map=Thread.getAllStackTraces();
System.out.println(map.size());
把这两句话放在需要的方法里里,运行就可以得到结果了。
下面这句话是java api的解释:
Thread类。
getAllStackTracespublic static Map getAllStackTraces()返回所有活动线程的堆栈跟踪的一个映射。映射键是线程,而每个映射值都是一个 StackTraceElement 数组,该数组表示相应 Thread 的堆栈转储。返回的堆栈跟踪的格式都是针对 getStackTrace 方法指定的。
在调用该方法的同时,线程可能也在执行。每个线程的堆栈跟踪仅代表一个快照,并且每个堆栈跟踪都可以在不同时间获得。如果虚拟机没有线程的堆栈跟踪信息,则映射值中将返回一个零长度数组。
如果有安全管理器,则通过 RuntimePermission("getStackTrace") 权限和 RuntimePermission("modifyThreadGroup") 权限调用其 checkPermission 方法,查看是否可以获得所有线程的堆栈跟踪。
收起 评论  |  0  1 2013-02-22 16:19 saintljf  | 二级 System.out.println(Thread.currentThread().getThreadGroup().activeCount());
这段代码放到任意属于线程池的线程方法里,运行得到结果
评论(1)  4  1 2015-07-07 09:38 幸福专卖店8888  | 九级 System.out.println(Thread.getAllStackTraces().size());


更多相关文章

  1. Android(安卓)开发入门-常用控件的使用方法
  2. Android兼容性优化-8.0之后禁止在后台启动服务的兼容性优化
  3. android BottomSheetDialog新控件解析,实现知乎评论列表效果
  4. Android原生方法和Web JS互相调用
  5. Android(安卓)Telephony分析(四) ---- TelephonyManager详解
  6. Android版的模拟交通灯
  7. android学习方法
  8. Android(安卓)studio for mac 的一些常用快捷键
  9. View编程(2): invalidate()再探

随机推荐

  1. Android(安卓)XML使用
  2. Android(安卓)国际化,文本国际化,图片国
  3. android 获得焦点(View get focus)
  4. 【Android(安卓)系统开发】 Android(安卓
  5. 除去ScrollView拉到尽头时再拉的阴影效果
  6. Qt 5.7.0 (32 bit) 配置 Android(安卓)环
  7. Android(安卓)后台发邮件
  8. ScrollView中添加一个android:fillViewpo
  9. Android禁止横屏竖屏切换
  10. 2011.08.15——— android audioManager