public class MyActivity extends ActionBarActivity {
Thread thread1,thread2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
thread1=new Thread(runnable1);
thread2=new Thread(runnable2);
thread1.start();
thread2.start();
}
Runnable runnable2=new Runnable() {
@Override
public void run() {
for (int i=0;i<30;i++)
try {
Thread.currentThread().sleep(1000);
System.out.println("THREAD 22222 ===>"+i);
if (i==6){
thread1.join();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Runnable runnable1=new Runnable() {
@Override
public void run() {
//while(thread2flag){
for (int i=0;i<8;i++)
try {
Thread.currentThread().sleep(1000);
System.out.println("THREAD 111111 ===>"+i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}
Thread.join在哪里调用,谁调用谁就等待被join的线程的结束后再执行。
同时启动两个线程,进行消息打印,若是没有join方法的干预,通常来讲,二者轮番抢cpu,谁抢到了谁执行,二者争到cpu几率同样大。当线程2执行到i==6的时候,霸王来了,也没准,不是没准确实是线程2自愿的,发扬绅士风度,在本身内调用线程1的join方法,那么此时线程2就停在那里了,把cpu使用权(暂且这么说吧,也不知合不合理)给了线程1,此时线程1愉快欢唱屁颠屁颠乐呵乐呵绝不客气的执行完了本身的操做,而后线程2默默地望着线程1远去的背影,开始继续本身的执行旅程。纯属我的理解,如有异议,欢迎批评指正。