java中一個子線程如何通過interrupt手段來停止另外一個子線程
下面給出了一個子線程通過interrupt手段,來停止另外一個子線程的例子。
馬克- to-win:馬克 java社區(qū):防盜版實名手機(jī)尾號: 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();
}
}
輸出結(jié)果:
我是子線程1,被打斷
我是子線程,第二次睡時被打斷
后續(xù):
馬克-to-win:在上面例子中用st.setSilblingThread1(st1);和st1.setSilblingThread(st);把子線程的指針或參考相互傳遞給對方后, 用和過去一樣的方法互相中斷線程。