首页 > 编程语言 >Java面试之有三个线程T1,T2,T3,如何保证顺序执行?

Java面试之有三个线程T1,T2,T3,如何保证顺序执行?

时间:2024-11-14 22:50:00浏览次数:3  
标签:Java Thread t2 T2 T3 T1 线程

前言

本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!有三个线程T1,T2,T3,如何保证顺序执行?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘

*** 12万字的java面试题整理 ***

有三个线程T1,T2,T3,如何保证顺序执行?

在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成。

实际上先启动三个线程中哪一个都行, 因为在每个线程的run方法中用join方法限定了三个线程的执行顺序。

public class JoinTest2 { 
  // 1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行
   public static void main(String[] args) {
            final Thread t1 = new Thread(new Runnable() {
                  @Override
                   public void run() {
                               System.out.println("t1"); 
                    }
            }); 
            final Thread t2 = new Thread(new Runnable() {
                    @Override
                     public void run() {
                             try {
                                   // 引用t1线程,等待t1线程执行完
                                     t1.join();
                               } catch (InterruptedException e) {
                                     e.printStackTrace();
                               }
                             System.out.println("t2");
                      }
             });
          Thread t3 = new Thread(new Runnable() {
                   @Override
                    public void run() {
                           try {
                                 // 引用t2线程,等待t2线程执行完
                                 t2.join();
                            } catch (InterruptedException e) {
                                 e.printStackTrace();
                             }
                             System.out.println("t3");
                      }
             });
           t3.start();//这里三个线程的启动顺序可以任意,大家可以试下!
           t2.start();
           t1.start();
   }
}

标签:Java,Thread,t2,T2,T3,T1,线程
From: https://blog.csdn.net/2401_87718562/article/details/143754222

相关文章

  • Java面试之多线程&并发篇(3)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!SynchronizedMap和ConcurrentHashMap有什么区别?什么是线程安全?Thread类中的yield方法有什么作用?Java线程池中submit()和execute()方法有什么区别?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12......
  • Java面试之多线程&并发篇(3)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!SynchronizedMap和ConcurrentHashMap有什么区别?什么是线程安全?Thread类中的yield方法有什么作用?Java线程池中submit()和execute()方法有什么区别?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12万字的j......
  • 自主研发RPA,基于uiautomatorviewer的自动化代码生成器,一键生成Java代码和Cucumber描述
    介绍基于UIAutomator进行二次开发,让你不懂开发也能编写自动化测试代码, 一边生成代码一边Debug,毫不费力写出完美的自动化测试代码 。该工具集成了Tomcat使得添加新的功能的时候使用HTML+API进行开发,降低了开发难度;集成了Derby数据库,测试用例持久化到数据库。软件架构采用HTML......
  • 【java开发】什么是内存溢出和内存泄漏?如何解决?
    一、内存溢出1.1导致的原因1.2解决方法二、内存泄漏2.1导致的原因2.2解决方法2.3示例代码三、对比四、总结内存溢出和内存泄漏是我们经常听到的两种内存管理问题,那么,它们是如何导致的?又该如何解决?这篇文章,我们来聊一聊。一、内存溢出内存溢出(O......
  • 面试题——Java中的锁
    文章目录谈谈你对线程安全的理解?1、synchronized关键字是怎么用的?1.1构造方法可以使用synchronized关键字修饰么?1.2使用String作为锁对象,会有什么问题?1.3synchronized的底层原理有了解吗?1.4synchronized怎么保证可重入性?可见性?抛异常怎么办?1.4还使用过其他锁......
  • 每日OJ题_牛客_计算字符串的编辑距离_DP_C++_Java
    目录牛客_计算字符串的编辑距离_DP题目解析C++代码Java代码牛客_计算字符串的编辑距离_DP计算字符串的编辑距离_牛客题霸_牛客网描述:Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现九
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现十
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • 2- R语言基本图形绘制之直方图——基于ggplot2
      直方图通过在x轴上将值域分割为一定数量的数据桶,在y轴上显示相应值的频数,展示了连续型变量的分布。  ggplot(data,aes(x=contvar))+geom_histogram()  #data是一个数据框;contvar是一个连续型变量。  下面我们使用ggplot包中的mpg数据框,分析2008年117个汽......
  • HowTo—— Swift2.0在视图中显示地图
    HowTo——Swift2.0在视图中显示地图东坡肘子​ ​关注他 4人赞同了该文章HowTo系列只提供代码和简单的说明,XcodeVersion12.0beta2(12A6163b)Swift2.0中,苹果添加了Map,让开发者可以非常容易的在View中添加需要的地图元素。importSwiftUIimpor......