背负青天而莫之夭阏者,而后乃今将图南。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 互联网 > 面试题 > 正文

「Android大厂必问面试题」有三个线程时如何确保按顺序执行?

swdejp 2023-09-11 193 浏览 0 评论

题目:有三个线程T1,T2,T3,怎么确保它们按顺序执行?

这道题想考察什么?

是否了解多个线程顺序启动的方式有哪些与真实场景使用,是否熟悉多个线程顺序启动在工作中的表现是什么?

考察的知识点

多个线程顺序启动的方式有哪些的概念在项目中使用与基本知识

考生应该如何回答

问:假设有三个线程,怎么确保他们按顺序执行?

答:

第一种方式,最简单,最直接的方式:

先启动T3,让T3调用T2,让T2调用T1

package com.derry;
 
public class Testt {
    static Testt t=new Testt();
    class T1 extends Thread{
        
        @Override
        public void run() {
            //T3线程中要处理的东西
            System.out.println("T1线程执行");
        }
    }
    
    class T2 extends Thread{
        @Override
        public void run() {
            //T3线程中要处理的东西
            System.out.println("T2线程执行");
            t.new T1().start();
        }
    }
    
    class T3 extends Thread{
        @Override
        public void run() {
            //T3线程中要处理的东西
            System.out.println("T3线程执行");
            t.new T2().start();
        }
    }
    
    public static void main(String[] args) {
        t.new T3().start();
    }
}

第二种方式,join控制:

采用join方法在一个线程中启动另外线程,直到另一个线程执行完成,以此类推:

package com.derry;
 
public class Testt {
    static Testt t=new Testt();
    
    class T1 extends Thread{
        @Override
        public void run() {
            //T3线程中要处理的东西
            System.out.println("T1线程执行");
               for(int i=0;i<10;i++){
                    System.out.println(this.getName() + ":" + i);
                }
        }
    }
    
    class T2 extends Thread{
        @Override
        public void run() {
            //T3线程中要处理的东西
            System.out.println("T2线程执行");
            
            for(int i=0;i<10;i++){
                System.out.println(this.getName() + ":" + i);
            }
        }
    }
    
    class T3 extends Thread{
        @Override
        public void run() {
            //T3线程中要处理的东西
            System.out.println("T3线程执行");
            
            for(int i=0;i<10;i++){
                System.out.println(this.getName() + ":" + i);
            }
        }
    }
    
    public static void main(String[] args) {
        try {
            t.new T3().start();//启动t3线程
            t.new T3().join();//阻塞主线程,执行完t3再返回
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        try {
            t.new T1().start();//启动t1线程
            t.new T1().join();//阻塞主线程,执行完t1再返回
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        try {
            t.new T2().start();//启动t2线程
            t.new T2().join();//阻塞主线程,执行完t2再返回
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
}

总结:工作中比较常用的方式,还是使用join方法来对线程进行控制

为了让大家能轻松应对考官追问,每天更新一期Android大厂面试题解析

如果觉得对您有帮助就来个关注三连吧~谢谢您咯~

相关推荐

Vue 前端面试题
Vue 前端面试题

前端开发前言前几天整理了一些html+css+JavaScript常见的面试题(https://segmentfault.com/u/youdang...

7个月前 (10-21) swdejp

58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度

1.vue优点?答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;简单易学:国人开发,中文文档,不存在语言障碍,易于理解和学习;双向数据绑定:保留了angular的特...

Web前端工程师面试之Vue问题汇总解析
Web前端工程师面试之Vue问题汇总解析

又是一年毕业季,很多学习前端的同学面对激烈的求职竞争倍感压力,想要了解企业招聘会提问哪些问题。今天千锋郑州Web前端培训小编就给大家分享一下高级Web前端工程师...

7个月前 (10-21) swdejp

60个Vue常见问题汇总及解决方案

Q1:安装超时(installtimeout)方案有这么些:cnpm : 国内对npm的镜像版本/*cnpm website: https:/...

前端面试题《Vue》

1.vue优点?轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;简单易学:国人开发,中文文档,不存在语言障碍,易于理解和学习;双向数据绑定:保留了angular的特点,...

吊打面试官系列-58道vue面试题

1.vue优点?2.vue父组件向子组件传递数据?3.子组件像父组件传递事件?4.v-show和v-if指令的共同点和不同点?5.如何让CSS只在当前组件中起作用?6.的作用是什么?7.如何获...

前端来自真实大厂的532道面试题

前言面试题是来自微博@牛客网发布的真实大厂前端面经题目,我一直在收集题目长期一个一个的记录下来的,可能会有重复,但基本前端的面试大纲和需要掌握的知识都在其中了,面试题仅做学习参考,学习者阅后也要用心钻...

60个前端框架Vue常见问题汇总及解决方案

  Q1:安装超时(installtimeout)  方案有这么些:  cnpm:国内对npm的镜像版本  /*  cnpmwebsite:https://npm.taobao.org/  ...

前端面试题(十四)

项目开发1.项目开发中,目录机构是怎么设计的https://go.zbj.com/news/13471.html2.曾经用过哪些开发工具https://www.jianshu.com/p/af24...

前端 JS 笔试百题

单选题JS基础js概念与类型检测以下不属于typeof运算符返回值的是?A. "string"B. "function"C.&n...

java面试之JVM篇第五问--谈谈对 OOM 的认识?如何排查 OOM 问题?

除了程序计数器,其他内存区域都有OOM的风险。栈一般经常会发生StackOverflowError,比如32位的windows系统单进程限制2G内存,无限创建线程就会发生栈的OOM...

Java筑基(Tomcat+Mysql+设计模式+并发+Netty+JVM)

1.Java筑基(Tomcat+Mysql+设计模式+并发+Netty+JVM)以JVM面试题为例:Java类加载过程?描述一下JVM加载Class文件的原理机制?Java内存分配GC是什么...

深入浅出!2020年春招+秋招JVM面试题整理(附答案)

运行时数据区是什么?虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区,这些区域有各自的用途、创建和销毁时间。线程私有:程序计数器、Java虚拟机栈、本地方法栈。线程共享:...

如何备战JVM调优面试?

面试痛点一些常见理论,如JVM内存模型,垃圾回收算法,垃圾回收器,类加载都背滚瓜烂熟。但面试官问:你平时在工作中如何进行JVM优化?很多人直接懵逼了,大部分工程师对JVM的掌握仅仅停留在JVM的一些理...

「Android大厂必问面试题」有三个线程时如何确保按顺序执行?

题目:有三个线程T1,T2,T3,怎么确保它们按顺序执行?这道题想考察什么?是否了解多个线程顺序启动的方式有哪些与真实场景使用,是否熟悉多个线程顺序启动在工作中的表现是什么?考察的知识点多个线程顺序启...

取消回复欢迎 发表评论: