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