当前位置:   article > 正文

c++11 多线程 顺序执行_阿里真实面试题解析之实现多个线程顺序执行的几种方式...

c++如何控制多线程执行顺序

前几天有一位同事在阿里一面的时候被问到这么一个多线程问题:如何保证多个线程的顺序执行。当时他没有回答上来,所以为了避免大家以后遇到同样的面试题还是回答不上来,今天我们就来分析解答下这个问题。

问题缘由

由于线程执行是靠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方式实现

join方式即使用Thread.join方法来实现。T

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/197883?site
推荐阅读
相关标签
  

闽ICP备14008679号