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

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

时间:2024-11-13 22:30:02浏览次数:1  
标签: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://www.cnblogs.com/xswz/p/18544980

相关文章

  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现八
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • Java 项目注入、上传、搜索及插件挖掘的代码审计
    目录Java项目注入、上传、搜索及插件挖掘的代码审计一、什么是Java项目注入、上传、搜索及插件挖掘的代码审计二、原理(一)注入原理(二)文件上传原理(三)搜索功能安全原理(四)插件安全原理三、步骤与代码示例(一)准备工作(二)注入攻击审计步骤与代码示例(三)文件上传审计步骤与......
  • 深入理解Java的类加载与卸载机制
    在Java中,类加载和卸载是Java虚拟机(JVM)管理类生命周期的重要环节。类加载是Java动态链接机制的核心,通过它,JVM可以在运行时加载类文件。而类的卸载则是为了节省内存,将无用的类从JVM中移除。要理解类的加载和卸载,不仅有助于解决类加载异常、内存泄漏等问题,也能帮助我们更好地优......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现七
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • Java API笔记
    JavaAPI(ApplicationProgrammingInterface)是一组预先定义好的类和接口,帮助开发者快速开发应用程序。常用的packagejava.lang:包含了一些基础类,如Object、String、System等。java.util:提供了许多实用工具类,如集合框架(List、Set、Map)、日期/时间处理等。javafx:用于创建富客......
  • JavaScript新版本6个新功能盘点
    JavaScript在2024年更新引入了6个关键功能。从使文本和日期更易于处理,到程序等待和协同工作的新方法,甚至使模式更容易查找。我们一起来看看吧!01、格式正确的Unicode字符串格式良好的Unicode字符串引入了确保JavaScript中的字符串以UTF-16编码正确格式化的方法。此......
  • JAVASCRIPT 将推出新的时间、日期和集合功能
    我们预计将在ECMAScript2025中看到的重大JavaScript新功能,以及导致它们延迟的讨论。译自JavaScriptDueforNewTime,DateandSetFeaturesNextYear,作者MaryBranscombe。JavaScript下一个年度更新将在新年初确定其包含的功能,包括在2025年3月前达到最终第四阶......
  • Java流程控制(三)
    用户交互Scanner(java.util.Scanner获取用户的输入)//基本语法Scanners=newScanner(System.in)通过Scanner类的next()与nextLine()方法获取输入的字符串,使用hasNext()与hasNextLine()判断是否还有输入的数据(Next不能得到带有空格的字符串,NextLine可以获得空白)importjava......
  • JavaScript常用对象方法一:字符串(string)
    string对象有很多方法,但一般开发里,一些方法很少用到,比如concat(),他的作用似乎将两个字符串拼接起来,但开发时,使用加号也能实现字符串拼接效果,所以这种方法就不介绍了。这里只介绍一些开发常用的方法,不多,但都很重要,属于必须掌握的方法1.indexOf()返回某个指定的字符串值在字符串......
  • 【计算机毕设选题讲解】基于JAVA的校园二手物品交易系统的设计与实现 【附源码+数据库
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......