首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

发个多线程有关问题,求解

2013-01-23 
发个多线程问题,求解public class Test4implements Runnable{@Overridepublic void run() {for(int i0i

发个多线程问题,求解

public class Test4  implements Runnable{

@Override
public void run() {

for(int i=0;i<10;i++){
System.out.println("A");
if(i==5){
System.out.println(500);
Thread.currentThread().interrupt();
}
}

}


public static void main(String[] args) {

Thread t=new Thread(new Test4());

t.start();

for(int i=0;i<1000;i++){

System.out.println("B");

}
}

}



我想当i==5的时候停止线程t可是运行结果是这样的

B
B
B
B
B
B
B
B
B
B
A
A
A
A
A
A
stop
A
A
A
A

在stop之后t仍然线程存在,就解释怎么才能强制结束线程t
[解决办法]
http://www.cnblogs.com/linjiqin/archive/2011/04/11/2012695.html   

lz可以参考这篇帖子!
[解决办法]

public class Test4 implements Runnable {
Thread t = null;

public void run() {

for (int i = 0; i < 10; i++) {
System.out.println("A");
if (i == 5) {
System.out.println(500);
t.interrupt();
}
}

}

public void info() {
t = new Thread(new Test4());

t.start();

for (int i = 0; i < 1000; i++) {

System.out.println("B");

}
}

public static void main(String[] args) {
new Test4().info();
}

}

[解决办法]
interrupt是一种协作机制,http://www.ticmy.com/?p=31

就好比是设置了一个标志位,你要自己处理的,比如

public void run() {
         
        for(int i=0;i<10;i++){
            System.out.println("A");
            if(i==5){
                System.out.println(500);
                //Thread.currentThread().interrupt();
            }
            if(Thread.interrupted()) {
                  throw new InterruptedException("线程被中断");
            }
        }
         
    }

热点排行