线程执行顺序怎么控制?

简介: 线程执行顺序怎么控制?

假设有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

可以使用join方法解决这个问题。比如在线程A中,调用线程B的join方法表示的意思就是:A等待B线程 执行完毕后(释放CPU执行权),在继续执行。

代码如下:

publicclassThreadTest {
publicstaticvoidmain(String[] args) {
Threadspring=newThread(newSeasonThreadTask("春天"));
Threadsummer=newThread(newSeasonThreadTask("夏天"));
运行结果:Threadautumn=newThread(newSeasonThreadTask("秋天"));
try {
//春天线程先启动spring.start();
//主线程等待线程spring执行完,再往下执行spring.join();
//夏天线程再启动summer.start();
//主线程等待线程summer执行完,再往下执行summer.join();
//秋天线程最后启动autumn.start();
//主线程等待线程autumn执行完,再往下执行autumn.join();
        } catch (InterruptedExceptione) {
e.printStackTrace();
        }
    }
}
classSeasonThreadTaskimplementsRunnable {
privateStringname;
publicSeasonThreadTask(Stringname){
this.name=name;
    }
@Overridepublicvoidrun() {
for (inti=1; i<4; i++) {
System.out.println(this.name+"来了: "+i+"次");
try {
Thread.sleep(100);
            } catch (InterruptedExceptione) {
e.printStackTrace();
            }
         }
    }
}

运行结果:

春天来了: 1春天来了: 2春天来了: 3夏天来了: 1夏天来了: 2夏天来了: 3秋天来了: 1秋天来了: 2秋天来了: 3
相关文章
|
Java 调度
多线程执行顺序以及run方法的调用
多线程执行顺序以及run方法的调用
多线程执行顺序以及run方法的调用
|
Java
【高并发】线程的执行顺序没你想的那么简单
调用Thread的start()方法启动线程时,线程的执行顺序是不确定的。也就是说,在同一个方法中,连续创建多个线程后,调用线程的start()方法的顺序并不能决定线程的执行顺序。
288 1
【高并发】线程的执行顺序没你想的那么简单
|
编译器 Linux 调度
线程 - 线程优先级的高低和执行顺序的关系
线程 - 线程优先级的高低和执行顺序的关系
203 0
|
Java
注意:线程的执行顺序与你想的并不一样!!
调用Thread的start()方法启动线程时,线程的执行顺序是不确定的。也就是说,在同一个方法中,连续创建多个线程后,调用线程的start()方法的顺序并不能决定线程的执行顺序,今天,我们就一起来看看线程到底是如何执行的,它的执行顺序又是怎样的呢?
911 0
注意:线程的执行顺序与你想的并不一样!!
高并发之——线程的执行顺序
调用Thread的start()方法启动线程时,线程的执行顺序是不确定的。也就是说,在同一个方法中,连续创建多个线程后,调用线程的start()方法的顺序并不能决定线程的执行顺序。
157 0
|
Java
java 中线程执行顺序控制
[java] view plain copy   Thread t1 = new Thread(new Runnable() {          @Override       public void run() {           System.
522 0
|
2月前
|
存储 监控 Java
Java多线程优化:提高线程池性能的技巧与实践
Java多线程优化:提高线程池性能的技巧与实践
63 1

相关实验场景

更多