发个多线程问题,求解
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("线程被中断");
}
}
}