java中一个子线程如何通过interrupt手段来停止另外一个子线程
下面给出了一个子线程通过interrupt手段,来停止另外一个子线程的例子。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例:1.5.2_2-本章源码
class ThreadMark_to_win extends Thread {
Thread st1;
public void run() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("我是子线程,被打断");
}
st1.interrupt();
try {
Thread.sleep(300);
} catch (InterruptedException e) {
System.out.println("我是子线程,第二次睡时被打断");
return;
}
}
public void setSilblingThread1(Thread t1) {
st1 = t1;
}
}
class ThreadMark_to_win1 extends Thread {
Thread st;
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
System.out.println("我是子线程1,被打断");
}
st.interrupt();
}
public void setSilblingThread(Thread t1) {
st = t1;
}
}
public class Test {
public static void main(String[] args) {
ThreadMark_to_win st = new ThreadMark_to_win();
ThreadMark_to_win1 st1 = new ThreadMark_to_win1();
st.setSilblingThread1(st1);
st1.setSilblingThread(st);
st.start();
st1.start();
}
}
输出结果:
我是子线程1,被打断
我是子线程,第二次睡时被打断
后续:
马克-to-win:在上面例子中用st.setSilblingThread1(st1);和st1.setSilblingThread(st);把子线程的指针或参考相互传递给对方后, 用和过去一样的方法互相中断线程。