并发编程模型
并发系统中我们可以使用多种并发编程模型来实现
并发模型中指定系统中线程采用指定的协作方式完成它的作业
不同的并发模型采用不同的方式拆分作业,同时线程间的协作和交互方式也不相同
下文将讲述不同并发编程模型,如下所示:
每个工作者完成整个任务。工作者们并行运作在不同的线程上,甚至可能在不同的CPU上 在Java应用系统中,并行工作者模型是最常见的并发模型
如:java.util.concurrent包中的许多并发实用工具都是设计用于这个模型的
如:
网络爬虫:
由于每一个线程爬取网页都同网络等其它信息有关,此时我们可以通过多开线程的方式,避免CPU出现大量的空闲时间,提高系统效率
出现阻塞使其效率变的低下
任务顺序不确定性:
如:一个线程正在运行第一步 ,而另一个线程可能正在运行任务的其它步骤导致共享信息发生变化,这些都是并行任务需考虑的地方
此时我们需考虑此处是否适用并行工作者模型
每个工作者只负责完成自身功能,当完成相应功能后,就转给下一个工作者,每个工作者都在自己的线程中工作
并发模型中指定系统中线程采用指定的协作方式完成它的作业
不同的并发模型采用不同的方式拆分作业,同时线程间的协作和交互方式也不相同
下文将讲述不同并发编程模型,如下所示:
并发模型与分布式系统相同点: 1.并发系统是线程间相互通信 2.分布式系统是进程之间相互通信
并行工作者模型
在并行工作者模型中,委派者(Delegator)将传入的作业分配给不同的工作者每个工作者完成整个任务。工作者们并行运作在不同的线程上,甚至可能在不同的CPU上 在Java应用系统中,并行工作者模型是最常见的并发模型
如:java.util.concurrent包中的许多并发实用工具都是设计用于这个模型的
并行工作者模型的优点
并行工作者模式优点:此模型易于理解,我们只需添加更多的工作者即可提高系统的并行度如:
网络爬虫:
由于每一个线程爬取网页都同网络等其它信息有关,此时我们可以通过多开线程的方式,避免CPU出现大量的空闲时间,提高系统效率
并行工作者模型的缺点
并行工作者模型,我们需注意的是共享数据的访问,因为多个线程对同一数据进行操作,所以在并行模型中,如果涉及共享数据操作时,此时会加入一些线程锁,使用线程进行排队操作,出现阻塞使其效率变的低下
任务顺序不确定性:
如:一个线程正在运行第一步 ,而另一个线程可能正在运行任务的其它步骤导致共享信息发生变化,这些都是并行任务需考虑的地方
此时我们需考虑此处是否适用并行工作者模型
流水线模式
流水线模式类似于工厂流水:每个工作者只负责完成自身功能,当完成相应功能后,就转给下一个工作者,每个工作者都在自己的线程中工作
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。