多线程编程:保证T1、T2、T3三个线程顺序执行
package com.company.niuke.Thread;
class ThreadJoin extends Thread{
public ThreadJoin(String name){
super(name);
}
@Override
public void run(){
for(int i=0;i<1000;i++){
System.out.println(this.getName() + ":" + i);
}
}
}
public class ThreadJoinTest {
public static void main(String[] args) throws InterruptedException{
ThreadJoin t1 = new ThreadJoin("春");
ThreadJoin t2 = new ThreadJoin("夏");
t1.start();
/**
* join方法:传递参数:表示main线程会等待t1线程10毫秒,10毫秒过去后,main线程和t1线程之间执行顺序变为普通的并行执行。
*/
/**
* 线程t1还没执行完,线程t2就开始执行了
*
*/
// t1.join(10);
/**
* t1.join():t2会等到t1执行完毕才开始执行。
*/
t1.join();
t2.start();
}
}
package com.company.niuke.Thread;
public class ThreadTestSync {
/**
* 确保T1,T2,T3 顺序执行
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException{
ThreadJoin2 t1 = new ThreadJoin2("t1");
ThreadJoin2 t2 = new ThreadJoin2("t2");
ThreadJoin2 t3 = new ThreadJoin2("t3");
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
t3.join();
}
}
class ThreadJoin2 extends Thread{
public ThreadJoin2(String name){
super(name);
}
@Override
public void run(){
for(int i=0;i<5;i++){
System.out.println(this.getName()+":"+i);
}
}
}