如果在当前进程中遍历进程中的所有线程? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能遍历所有进程,最多只能遍历 JVM 进程中的东西。 线程池也只是注册了处理任务的线程,并不可能注册所有的线程。而且java是间接控制线程,这个问题感觉从os和C的角度考虑其可行性可能更合适。 线程的问题也不是很懂 前几天做一个东西用到了线程,一跑就把CPU占满了,还以为是线程满了 结果老大一看就骂我 不是线程的问题,是资源占用 嘿嘿,虽然不懂还是要顶一个 楼主给我作证啊,我顶老.. 线程组中可以打印出其所有线程的瞬时状态。void list(PrintStream out, int indent) { int ngroupsSnapshot; ThreadGroup[] groupsSnapshot; synchronized (this) { for (int j = 0 ; j < indent ; j++) { out.print(" "); } out.println(this); indent += 4; for (int i = 0 ; i < nthreads ; i++) { for (int j = 0 ; j < indent ; j++) { out.print(" "); } out.println(threads[i]); } ngroupsSnapshot = ngroups; if (groups != null) { groupsSnapshot = Arrays.copyOf(groups, ngroupsSnapshot); } else { groupsSnapshot = null; } } for (int i = 0 ; i < ngroupsSnapshot ; i++) { groupsSnapshot[i].list(out, indent); } } public static String[] getThreadNames() { ThreadGroup group = Thread.currentThread().getThreadGroup(); ThreadGroup parent = null; while ( (parent = group.getParent()) != null ) { group = parent; } Thread[] threads = new Thread[group.activeCount()]; group.enumerate(threads); java.util.HashSet set = new java.util.HashSet(); for (int i=0; i < threads.length; ++i) { if (threads[i] != null && threads[i].isAlive()) { try { set.add(threads[i].getThreadGroup().getName()+"," +threads[i].getName()+"," +threads[i].getPriority()); } catch (Throwable e) {e.printStackTrace();} } } String[] result = (String[]) set.toArray(new String[0]); java.util.Arrays.sort(result); return result; } 运行一下结果,然后自由发挥吧。 大家帮帮忙,看看这个process是什么意思? java运行时报错。。。谁来帮下。。。 写过贪吃蛇代码的大哥帮忙提示一些东西 请问如果通过JAVA编程获得无线网卡的RSSI? 请问如何为JMenu添加组合快捷键? 为什么会提示'javac' 不是内部或外部命令,也不是可运行的程序 请教一个语句~~ 学习之余不妨看看! 关于JTree的图标 成都的SCJD和java高手请进 synchronized和wait的关系 小弟初学,请教一些关于java线程的问题~~~
而且java是间接控制线程,这个问题感觉从os和C的角度考虑其可行性可能更合适。
楼主给我作证啊,我顶老..
int ngroupsSnapshot;
ThreadGroup[] groupsSnapshot;
synchronized (this) {
for (int j = 0 ; j < indent ; j++) {
out.print(" ");
}
out.println(this);
indent += 4;
for (int i = 0 ; i < nthreads ; i++) {
for (int j = 0 ; j < indent ; j++) {
out.print(" ");
}
out.println(threads[i]);
}
ngroupsSnapshot = ngroups;
if (groups != null) {
groupsSnapshot = Arrays.copyOf(groups, ngroupsSnapshot);
} else {
groupsSnapshot = null;
}
}
for (int i = 0 ; i < ngroupsSnapshot ; i++) {
groupsSnapshot[i].list(out, indent);
}
}
ThreadGroup group = Thread.currentThread().getThreadGroup();
ThreadGroup parent = null;
while ( (parent = group.getParent()) != null ) {
group = parent;
}
Thread[] threads = new Thread[group.activeCount()];
group.enumerate(threads);
java.util.HashSet set = new java.util.HashSet();
for (int i=0; i < threads.length; ++i) {
if (threads[i] != null && threads[i].isAlive()) {
try {
set.add(threads[i].getThreadGroup().getName()+","
+threads[i].getName()+","
+threads[i].getPriority());
} catch (Throwable e) {e.printStackTrace();}
}
}
String[] result = (String[]) set.toArray(new String[0]);
java.util.Arrays.sort(result);
return result;
}
运行一下结果,然后自由发挥吧。