public class Msg {
public double i;
public double j;
public String orgStr = null;
}
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue; /**
* A = B + C
* j = i + j
*/
public class Plus implements Runnable {
public static BlockingQueue<Msg> queue = new LinkedBlockingQueue<>(); @Override
public void run() {
while (true){
try {
Msg msg = queue.take();
msg.j=msg.i+msg.j;
Multiply.queue.add(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue; /**
* D = A * B
* i = i * (i+j)
*/
public class Multiply implements Runnable{
public static BlockingQueue<Msg> queue = new LinkedBlockingQueue<>(); @Override
public void run() {
while (true){
try {
Msg msg = queue.take();
msg.i=msg.i*msg.j;
Div.queue.add(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue; /**
* D = D / 2
* i = i * (i+j)/2
*/
public class Div implements Runnable {
public static BlockingQueue<Msg> queue = new LinkedBlockingQueue<>();
@Override
public void run() {
while (true){
try {
Msg msg = queue.take();
msg.i=msg.i/2;
System.out.println(msg.orgStr+"="+msg.i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

/**
* 并行流水线
* 求 (B+C)*B/2
* Plus:A = B + C
* Multiply:D = A * B
* Div:D = D / 2
*
* i = i * (i+j)/2
*/
public class PStreamMain {
public static void main(String[] args){
new Thread(new Plus()).start();
new Thread(new Multiply()).start();
new Thread(new Div()).start();
for (int B = 1; B < 1000; B++) {
for (int C = 1; C < 1000; C++) {
Msg msg = new Msg();
msg.i = B;
msg.j = C;
msg.orgStr = "(("+B+"+"+C+")*"+B+")/2";
Plus.queue.add(msg);
}
}
}
//((1+1)*1)/2=1.0
//((1+2)*1)/2=1.5
//((1+3)*1)/2=2.0
//((1+4)*1)/2=2.5
//((1+5)*1)/2=3.0
//((1+6)*1)/2=3.5
//((1+7)*1)/2=4.0
//((1+8)*1)/2=4.5
//((1+9)*1)/2=5.0
//((1+10)*1)/2=5.5
//((1+11)*1)/2=6.0
//((1+12)*1)/2=6.5
//...
}

并行流水线--求 (B+C)*B/2的更多相关文章

  1. [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区

    [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区 目录 [源码解析] 深度学习流水线并行 PipeDream(2)--- 计算分区 0x00 摘要 0x01 前言 1.1 P ...

  2. 计算机体系结构——流水线技术(Pipelining)

    本文导读: 一.并行技术 .并行技术分类 .新技术的设计与实现 .指令周期 二.流水线技术 .什么是流水线 .指令重叠方式 .流水工作设计 .流水线的描述方法(时空图) .流水线特点 三.流水线的分类 ...

  3. 【深度学习系列3】 Mariana CNN并行框架与图像识别

    [深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框 ...

  4. Parallel Programming-实现并行操作的流水线(生产者、消费者)

    本文介绍如何使用C#实现并行执行的流水线(生产者消费者): 1.流水线示意图 2.实现并行流水线 一.流水线示意图 上图演示了流水线,action1接收input,然后产生结果保存在buffer1中, ...

  5. 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)

    试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段.现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增.那么我们就要新建一张合同历史表, ...

  6. [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush

    [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 目录 [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 0x0 ...

  7. 基于Drone+Gogs流水线-全面认识轻量级云原生CI引擎Drone

    1. 介绍 Drone by Harness 是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试.构建.发布.每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构 ...

  8. 基于FPGA的Sobel边缘检测的实现

    前面我们实现了使用PC端上位机串口发送图像数据到VGA显示,通过MATLAB处理的图像数据直接是灰度图像,后面我们在此基础上修改,从而实现,基于FPGA的动态图片的Sobel边缘检测.中值滤波.Can ...

  9. 生产者消费者模式-Java实现

    感知阶段 随着软件业的发展,互联网用户的日渐增多,并发这门艺术的兴起似乎是那么合情合理.每日PV十多亿的淘宝,处理并发的手段可谓是业界一流.用户访问淘宝首页的平均等待时间只有区区几秒,但是服务器所处理 ...

随机推荐

  1. [NOIP2016][luogu]换教室[DP]

    [NOIP2016] Day1 T3 换教室 ——!x^n+y^n=z^n 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n 节课程 ...

  2. luogu P1047 校门外的树 x

    P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...

  3. 29 基于PCL的点云平面分割拟合算法技术路线(针对有噪声的点云数据)

    0 引言 最近项目中用到了基于PCL开发的基于平面的点云和CAD模型的配准算法,点云平面提取采用的算法如下. 1 基于PCL的点云平面分割拟合算法 2 参数及其意义介绍 (1)点云下采样 1. 参数: ...

  4. 有道翻译爬取【json】

    ''' @Modify Time @Author ------------ ------- 2019/9/2 0:19 laoalo ''' import requests import json i ...

  5. (转)Linux将命令添加到PATH中

    转:https://www.cnblogs.com/leibg/p/4479921.html Linux将命令添加到PATH中博客分类:linuxLinuxApacheBash 简单说PATH就是一组 ...

  6. videojs实践--兼容ie7,8

    1,还是先上图 ie9+,ff,chrome,,,

  7. jQuery FileUpload doesn't trigger 'done'

     https://stackoverflow.com/questions/14674999/jquery-fileupload-doesnt-trigger-done   If your server ...

  8. Malformed UTF-8 characters, possibly incorrectly encoded 或中文乱码 (Uncaught InvalidArgumentException: Malformed UTF-8 characters, possibly incorrectly encoded in)

    问题: Uncaught InvalidArgumentException: Malformed UTF-8 characters, possibly incorrectly encoded in 是 ...

  9. MySQL 1130错误,无法远程连接

    错误:ERROR 1130: Host '192.168.1.3' is not allowed to connect to thisMySQL serve 错误1130:主机192.168.1.3” ...

  10. unittest单元测试(简单算法题)

    创建测试用例case.py文件 #创建类 class test (): def __init__(self,a,c): self.a =int(a) self.c =int (c) #加 def ad ...