赞
踩
前几天有一位同事在阿里一面的时候被问到这么一个多线程问题:如何保证多个线程的顺序执行。当时他没有回答上来,所以为了避免大家以后遇到同样的面试题还是回答不上来,今天我们就来分析解答下这个问题。
由于线程执行是靠CPU分时间片来处理的,那么多个线程执行的时候,如果不加限制,那么线程的执行顺序是无法保证的。如下源码:
public class OrderThreadMain { public static void main(String[] args) { Thread A = new Thread(()->{ System.out.println("A"); }); Thread B = new Thread(()->{ System.out.println("B"); }); Thread C = new Thread(()->{ System.out.println("C"); }); A.start(); B.start(); C.start(); }}
A B C三个线程同时启动,最后的执行结果不是每次都顺序输出 A B C,而是每次运行结果都是不一样的。有可能输出A B C,有也可能输出 B A C,是无法保证线程的顺序执行的。
join方式即使用Thread.join方法来实现。T
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。