读书人

发个多线程有关问题求解

发布时间: 2013-01-23 10:44:49 作者: rapoo

发个多线程问题,求解

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("线程被中断");
}
}

}

读书人网 >J2SE开发

热点推荐