Ocean
  • 1.6k

在编码中遇到什么场景(尤其是 JAVA 程序),需要指定线程的执行顺序,而不是让他们一起执行?

在编码中遇到什么场景(尤其是 JAVA 程序),需要指定线程的执行顺序,而不是让他们一起执行?

阅读 573
评论 2月22日提问
    2 个回答
    Yujiaao
    • 10.4k

    只要后续的操作依赖于前面的结果,那么都需要按特定顺序执行.

    举个烂栗子:

    假设有1亿个数,想求方差. 你可以

    1. 先起10个线程, 每个线程分1千万数据,分别求和,
    2. 得到后再加一起,
    3. 然后再起10个线程,分别计算方差.

    这个例子中,三个步骤必须顺序执行, 每个步骤又可以多线程的方式并行.

    1并行   2同步  3并行
    -----\        /-----
    ------=======-------
    -----/        \-----
    评论 赞赏 2月22日

      一般是多线程环境下需要安全访问非线程安全的资源,就会要求互斥执行,其他不关心线程安全的代码可以并发执行,最大可能地提高程序的执行效率。
      比如多线程下载工具把,可以开多个线程同时下载数据分块,但是下载到内存的数据写入磁盘过程必须单线程写,一个接一个,因为磁盘操作不是线程安全的,并发写入会造成数据错乱,

      评论 赞赏 2月22日
        撰写回答

        登录后参与交流、获取后续更新提醒