并发模型
并发编程模型
在使用Java进行多线程编程时,其中的规则都是基于并发编程模型的,所以对编发编程模型有所了解是有必要的。
并行工作者
这种模型会将传入的作业分配给不同的工作者,下图展示了并行工作者模型:
在并行工作者模型中,委派者(Delegator)将传入的作业分配给不同的工作者线程,每个工作者线程完成一整个任务,工作者线程可能运行在相同的CPU或不同的CPU上。
在Java系统中,并行工作者模型是最常见的模型。
并行工作者的优点
- 并行工作者模型比较容易理解。
- 只需要增加工作者数量就可以提高一定的性能。
并行工作者的缺点
并行工作者的缺点主要是在涉及到共享数据的时候出现的一系列问题
此时出现的问题可以归为以下几类:
- 一个线程读共享数据,同时有其他线程在写共享数据,此时该线程读到的是修改后还是修改后的数据是不确定的。
- 一个线程在写共享线程,同时有其他线程也在写共享数据,此时该共享数据的值是多个线程共同修改的结果还是只是若干个线程修改的结果。
- 各个线程的执行顺序是不确定的,即并不是按照程序代码顺序执行。