Java多线程编程中Master-Worker模式的详解
来源:互联网 发布:北约扩展知乎 编辑:程序博客网 时间:2024/05/29 17:34
Java多线程编程中,常用的多线程设计模式包括:Future模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式等。这篇文章主要讲述Master-Worker模式,关于其他多线程设计模式的地址如下:
关于其他多线程设计模式的地址如下:
关于Future模式的详解: Java多线程编程中Future模式的详解
关于Guarded Suspeionsion模式的详解: Java多线程编程中Guarded Suspeionsion模式的详解
关于不变模式的详解: Java多线程编程中不变模式的详解
关于生产者-消费者模式的详解:生产者-消费者模式Java详解
本文完。转载请注明出处。
参考文献
葛一鸣,Java程序性能优化.清华大学出版社.
关于其他多线程设计模式的地址如下:
关于Future模式的详解: Java多线程编程中Future模式的详解
关于Guarded Suspeionsion模式的详解: Java多线程编程中Guarded Suspeionsion模式的详解
关于不变模式的详解: Java多线程编程中不变模式的详解
关于生产者-消费者模式的详解:生产者-消费者模式Java详解
1 Master-Worker模式核心思想
Master-Worker模式是常用的并行模式之一,它的核心思想是:系统由两类进程协同工作,即Master进程和Worker进程,Master负责接收和分配任务,Wroker负责处理子任务。当各个Worker进程将子任务处理完成后,将结果返回给Master进程,由Master进程进行汇总,从而得到最终的结果,其具体处理过程如下图所示。
Master进程为主要进程,它维护一个Worker进程队列、子任务队列和子结果集。Worker进程队列中的Worker进程不停从任务队列中提取要处理的子任务,并将结果写入结果集。
2 Master-Worker模式的代码实现
Worker类的Java实现
Master类的Java实现3 Master-Worker模式的应用实例
利用Master-Worker模式实现计算立方和的应用。计算1^3+2^3+3^3+…+100^3。
这个计算任务被划分成100个子任务,每个任务仅仅用于计算单独的立方和。
Worker的子类
运行运行的调用函数如下。在主函数中首先通过Master类创建4个Worker工作进程和Worker工作实例PlusWorker。在提交了100个子任务后,边开始子任务的计算。这些子任务中由这4个进程共同完成。Master不用等待所有Worker计算完成才开始汇总,而是子任务在计算的过程中,Master就开始汇总了。
本文完。转载请注明出处。
参考文献
葛一鸣,Java程序性能优化.清华大学出版社.
阅读全文
0 0
- Java多线程编程中Master-Worker模式的详解
- Java多线程编程中Master-Worker模式的详解
- Java多线程编程中Master-Worker模式的详解
- Java多线程编程中Master-Worker模式的详解
- Java多线程编程中Master-Worker模式的详解
- Java多线程编程中Master-Worker模式的详解
- Java多线程编程中Master-Worker模式的详解
- java 多线程 master worker模式
- 多线程编程中的Master-Worker模式
- Java Master-Worker模式
- 多线程模式之Master-Worker模式
- 多线程设计模式-- Master-Worker模式
- Master-Worker模式 多线程设计模式
- 通过多线程模拟实现Master-Worker模式
- 多线程之Master-Worker工作模式学习
- 多线程设计模式(Future/Master-Worker)
- 多线程——worker-master模式
- 并发编程之Master-Worker模式
- Python 多线程编程 (一)
- 排序
- 软编码Flv 到Mp4 容器(十) fmp4 mvex box 讲解
- 去掉标题和沉浸式
- 证书生成
- Java多线程编程中Master-Worker模式的详解
- java.lang.NoClassDefFoundError: javax/transaction/Synchronization 解决方法。
- JAVA实现DAO层基本CRUD操作
- Mysql MERGE引擎简介
- 机智云与奥克斯签署合作协议,推进智能化战略部署
- ext3,ext4,xfs和btrfs文件系统性能对比
- (JAVA) 相邻数对
- SpringBoot--使用redis做缓存(2)
- SVG 贝塞尔曲线学习二