java中给出一个主线程要join子线程的例子
下面给出了一个join和interrupt互动的例子,还是主线程要join子线程。
例:1.5.3_1-本章源码
class ThreadMark_to_win extends Thread {
Thread mainT;
int e;
public void run() {
for (int i = 0; i < 10; i++)
{
try {
Thread.sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
if(i==4) mainT.interrupt();
e = e + i;
}
System.out.println("完成"+"e 在子线程"+e);
}
public void setMainThread(Thread t1) {
mainT=t1;
}
}
public class Test {
public static void main(String[] args) {
Thread mainT = Thread.currentThread();
ThreadMark_to_win tm = new ThreadMark_to_win();
tm.setMainThread(mainT);
tm.start();
try {
tm.join();
} catch (InterruptedException e) {
System.out.println("我是主程序, 也被打断");
}
System.out.println("主线程e = " + tm.e);
}
}
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
输出结果:
我是主程序, 也被打断
主线程e = 10
完成e 在子线程45
后续:
马克-to-win:在上述的例子中:主线程还是想join子线程,但子线程当计算到i==4时,打断了主线程,所以主线程打出e=10;但子线程继续自己的线程运行,所以打印出“完成e 在子线程45”