调用Thread类中interrupt(),没有异常抛出。但是调用isInterrupted()测试线程是否中断,返回false.代码如下public class ThreadKiller
{
public static void main(String args[]){
// Find the root thread group
//ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
ThreadGroup root = Thread.currentThread().getThreadGroup();
System.out.println((new java.util.Date()).toString());
System.out.println("Start**********************************");
while (root.getParent() != null) {
root = root.getParent();
//System.out.println("tttt");
}
// Visit each thread group
visit(root, 0); System.out.println("END**********************************");
}
// This method recursively visits all thread groups under `group'.
public static void visit(ThreadGroup group, int level) {
// Get threads in `group'
int numThreads = group.activeCount();
System.out.println("group=" + group.getName());
Thread[] threads = new Thread[numThreads*2];
numThreads = group.enumerate(threads, false);
//System.out.println(numThreads);
System.out.println(level + "-------------------Start");
// Enumerate each thread in `group'
for (int i=0; i<numThreads; i++) {
// Get thread
Thread thread = threads[i];
//System.out.println("ID=" + thread.getId());
//String thread
String threadString = thread.toString();
if (threadString.indexOf("Boss") > 0)
{
System.out.println("Name=" + thread.toString());
if (threadString.indexOf("Instance2") > 0)
{
System.out.println("Kill.................");
thread.interrupt();
System.out.println("Killed=" + thread.isInterrupted());
}
}
}
System.out.println(level + "-------------------End");
// Get thread subgroups of `group'
int numGroups = group.activeGroupCount();
ThreadGroup[] groups = new ThreadGroup[numGroups*2];
numGroups = group.enumerate(groups, false);
// Recursively visit each subgroup
for (int i=0; i<numGroups; i++) {
visit(groups[i], level+1);
}
}}
{
public static void main(String args[]){
// Find the root thread group
//ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
ThreadGroup root = Thread.currentThread().getThreadGroup();
System.out.println((new java.util.Date()).toString());
System.out.println("Start**********************************");
while (root.getParent() != null) {
root = root.getParent();
//System.out.println("tttt");
}
// Visit each thread group
visit(root, 0); System.out.println("END**********************************");
}
// This method recursively visits all thread groups under `group'.
public static void visit(ThreadGroup group, int level) {
// Get threads in `group'
int numThreads = group.activeCount();
System.out.println("group=" + group.getName());
Thread[] threads = new Thread[numThreads*2];
numThreads = group.enumerate(threads, false);
//System.out.println(numThreads);
System.out.println(level + "-------------------Start");
// Enumerate each thread in `group'
for (int i=0; i<numThreads; i++) {
// Get thread
Thread thread = threads[i];
//System.out.println("ID=" + thread.getId());
//String thread
String threadString = thread.toString();
if (threadString.indexOf("Boss") > 0)
{
System.out.println("Name=" + thread.toString());
if (threadString.indexOf("Instance2") > 0)
{
System.out.println("Kill.................");
thread.interrupt();
System.out.println("Killed=" + thread.isInterrupted());
}
}
}
System.out.println(level + "-------------------End");
// Get thread subgroups of `group'
int numGroups = group.activeGroupCount();
ThreadGroup[] groups = new ThreadGroup[numGroups*2];
numGroups = group.enumerate(groups, false);
// Recursively visit each subgroup
for (int i=0; i<numGroups; i++) {
visit(groups[i], level+1);
}
}}
解决方案 »
- ClassNotFound error分析。。。。。。。。。。。。。。。
- 看一下我的程序为什么splitter3.setDividerLocation(0.5)无效
- java Vector中存放的都是byte元素,如何将其赋给一个byte[]
- prefferredsize
- 数据格式化的问题,请占用您一分钟时间帮我看看
- 回答java如何读写PowerPopit 可以增加到200分,求求大侠们帮忙了
- 哪位大哥介绍一下看swing的经验啊
- 能在window ce 中开发java程序吗?
- 我如何在一个applet中把焦点设置到文本框中?
- 文件输入出现问题
- jdbc 连接oracle10g 出错
- 请问哪里有struts中文帮助文档?谢谢
调用wait(),sleep()时线程处于阻塞状态.
你说的会抛出异常的方法应该是interrupted()