java 多线程保证顺序_很好玩的多线程面试题:如何保证线程顺序执行?两个实例讲清楚...

本文介绍了如何在Java中确保线程按特定顺序执行,通过T1-T2-T3的例子详细讲解了join方法的使用,并提供了一个交替打印ABC的线程同步案例,帮助理解多线程同步机制。
摘要由CSDN通过智能技术生成

作为面试宠儿的多线程,在面试的时候是一定会被询问的话题,今天,在和朋友聊天的时候,他问了我一道很好玩的多线程面试题,不难,但是想解释清楚,还真的是不容易

问题:现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行

当看到这个问题的时候,我的第一反应就是wait、notify(会在后面附上代码+解释),然后脑子里闪过好多不同的方案,那我们就来看一下我的第一反应是如何处理的

分析:

Thread类中的join方法是用来同步的,底层其实是调用了 wait方法。先来看一下演示代码:

package com.whh.concurrency;

/**

*@description:

* 问题:现在有 T1、T2、T3 三个线程,怎样保证 T2 在 T1 执行完后执行T3在T2执行完

* 分析:使用join方法实现

*@author:wenhuohuo

*/

public class MyJoin {

public static void main(String[] args) {

final Thread t1 = new Thread(new Runnable() {

@Override

public void run() {

System.out.println("线程1");

}

},"t1");

final Thread t2 = new Thread(new Runnable() {

@Override

public void run() {

try {

t1.join();

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("线程2");

}

},"t2");

final Thread t3 = new Thread(new Runnable() {

@Override

public void run() {

try {

t2.join();

}catch (Exception e){

e.printStackTrace();

}

System.out.println("线程3");

}

},"t3");

t3.start();

t2.start();

t1.start();

}

}<

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值