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

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

阅读 2.2k
2 个回答

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

举个烂栗子:

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

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

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

1并行   2同步  3并行
-----\        /-----
------=======-------
-----/        \-----

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题