b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

通过多种方法来实现对Ali真实面试问题的分析中的多个线程的顺序执行

电脑杂谈  发布时间:2020-05-28 23:20:04  来源:网络整理

阿里hr面试问题_多线程面试题 阿里_阿里 android 面试题目

几天前,一位同事在阿里方面被问到了这样一个多线程问题: 如何确保多个线程的顺序执行. 当时他没有回答,所以为了避免每个人都会遇到相同的面试问题或仍然无法回答,我们今天将分析并回答这个问题.

问题原因

因为线程执行是由CPU时间片处理的,所以当执行多个线程时,如果没有限制,则不能保证线程的执行顺序. 以下源代码:

阿里hr面试问题_多线程面试题 阿里_阿里 android 面试题目

A B C三个线程同时启动,最终的执行结果不是每次都顺序输出A B C,但是每次运行的结果都不同. 可以输出A B C,也可以输出B A C,这不能保证线程执行的顺序.

加入方式

join方法是使用Thread.join方法实现的. Thread.join意味着当前线程需要先等待previousThread线程终止,然后才能从thread.join返回. 简单地说多线程面试题 阿里,线程将阻塞join方法,直到线程执行完毕.

有两种方法可以实现join方法: 主线程连接和执行线程连接. 让我们依次分析:

1. 主线程连接

阿里 android 面试题目_多线程面试题 阿里_阿里hr面试问题

上面的源代码是主线程连接的实现. 其原理是确保执行线程完成后再启动后续线程,从而实现多个线程的顺序执行.

2. 执行线程联接

上面的源代码是执行线程连接的实现方法. 原理是通过传入beforeThread(在执行此线程之前需要执行的线程对象)来确保依次执行多个线程.

多线程面试题 阿里_阿里hr面试问题_阿里 android 面试题目

Thread.join源代码实现:

从Thread.join的源代码中可以知道Thread.join的原理实际上非常简单,也就是说,如果线程尚未完成执行,则它一直在等待旋转训练,并且执行完成后多线程面试题 阿里,轮训结束,并继续执行后续代码.

Executors.newSingleThreadExecutor实现方式

Executors.newSingleThreadExecutor是一个特殊的线程池实现,它是一个单线程线程池,核心线程数和最大线程数为1,等效于串行执行,因此可以用来实现多个线程顺序执行.

阿里hr面试问题_阿里 android 面试题目_多线程面试题 阿里

注意: 如果您对线程池了解不多,可以阅读作者先前关于线程池的文章:

阿里P8老板总结: Java线程池的详细说明,阅读后您将了解

上面的源代码是Executors.newSingleThreadExecutor的实现. 只要按顺序提交任务,就可以保证执行多个线程任务.

END

作者是一个热爱互联网,互联网技术和共享技术的年轻人. 如果您像我一样,我愿意成为您的朋友,并与您分享每一项宝贵的知识. 喜欢作者,喜欢+转发+的学生!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-225770-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...