/**
* join方法是将指定的其他线程加入到该线程,此时主程序马上停止,开始执行加入的线程,直到加入的线程结束,主线程才继续执行
* 自定义线程中断,
*/
//主线程
public class ThreadDemo2 {
public static void main(String[] args) {
MyRunnable2 mr2 = new MyRunnable2();
Thread t3 = new Thread(mr2);
MyRunnable3 mr3 = new MyRunnable3();
Thread t = new Thread(mr3);
// t3.start();
t.start();
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName()+"->"+i);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==20){
// try {
// t3.join();//让t3线程进入,直到执行完,主程序才继续开始执行
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
mr3.flag = false;
}
}
}
}
class MyRunnable2 implements Runnable{
@Override
public void run() {
for (int i = 0; i < 60; i++) {
System.out.println(Thread.currentThread().getName()+"->"+i);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//自定义线程中断使用类
class MyRunnable3 implements Runnable{
public boolean flag = true;
public MyRunnable3(){
flag = true;
}
@Override
public void run() {
int i = 0;
while (flag){
System.out.println(Thread.currentThread().getName()+"->"+(i++));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}