`

利用Piped实现线程间通讯

 
阅读更多

 发送程序 :

   package com.thread;

import java.io.IOException;
import java.io.PipedOutputStream;

public class Thread1 extends Thread {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  new Thread1(new PipedOutputStream()).start();
 }
 
 PipedOutputStream pipeout;
 public Thread1(PipedOutputStream pipeout)
 {
  this.pipeout=pipeout;
 }
 public void run()
 {
  while (true)
  { 
   try {
    System.out.println(" THis is thread1");
    pipeout.write("ABCDEFGHIJKLMNOPQRSTUVWXYZ.".getBytes());
    pipeout.flush();
    System.out.println("发生数据");
    //pipeout.close();
    Thread.sleep(1000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  //pipeout.close();
 }

}
 接收线程:

package com.thread;

import java.io.IOException;
import java.io.PipedInputStream;

public class Thread2 implements Runnable {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  new Thread(new Thread2(new PipedInputStream())).start();

 }

 PipedInputStream pipein;
 Thread2(PipedInputStream pipein)
 {
  this.pipein=pipein;
  
 }
 
 @Override
 public void run() {
  // TODO Auto-generated method stub
  while (true)
  { 
   try {
    System.out.println(" THis is thread2");
    byte[] bytes = new byte[10];
    int length = pipein.read(bytes);
    System.out.println("接收:"+new String(bytes,0,length));
    
    //Thread.sleep(10000);
   
    Thread.sleep(0);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }

}
//主程序

package com.thread;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class Multi_Thread {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  
  
  
  try {
   PipedOutputStream pipeout= new PipedOutputStream();
   //方式一
   //PipedInputStream pipein= new PipedInputStream(pipeout);
   //方式二
   PipedInputStream pipein= new PipedInputStream();
   //方式二1
   //pipeout.connect(pipein);
   //方式二2   
   pipein.connect(pipeout);
   
   // TODO Auto-generated method stub
   Thread1 threadone=new Thread1( pipeout);
         //用Runnable接口类的对象创建线程;    
   Thread threadtwo=new Thread(new Thread2( pipein));
    threadone.start();
    threadtwo.start();//strat()方法启动线程;
    
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }

}

分享到:
评论

相关推荐

    piped piped串口映射工具

    总结来说,piped piped串口映射工具是一个利用管道技术实现串口映射的软件,适用于Windows系统,可能由HCL或H3C开发。它可以帮助用户在不同串口设备间建立连接,尤其在物理接口有限或需要远程通信的环境中。使用时,...

    piped强大的端口映射工具

    它的主要功能是实现端口间的映射,使得内部网络的服务能够通过公共IP暴露到外部网络,这对于远程访问和分布式系统尤为重要。Piped的体积小巧,意味着它不会占用过多的系统资源,这对于中小型企业来说,既经济又高效...

    piped(串口映射工具).rar

    Piped的核心功能在于它能够实现不同设备间串口的映射,这在处理多设备通信时尤为重要。无论是Cisco、华为等主流网络设备,还是其他不常见的硬件,Piped都能够有效地将它们的串行接口连接起来,使得数据能够流畅地在...

    piped连接H3C Cloud Lab模拟器

    标题中的“piped连接H3C Cloud Lab模拟器”指的是使用名为“piped”的工具来实现SecureCRT与H3C Cloud Lab模拟器之间的连接。Piped是H3C推出的一款辅助工具,它能够帮助用户通过SSH协议安全地连接到模拟器,提供一个...

    piped.7z 打开即可直接使用,无需安装

    "piped.7z" 是一个压缩包文件,其中包含了一个名为 "piped.exe" 的可执行文件。这个压缩包的特别之处在于它被设计成打开即用,无需进行额外的安装步骤,这意味着用户可以非常方便地直接启动 "piped.exe" 来使用其...

    piped.exe 端口工具

    端口映射工具。很实用的工具。有需要的请下载。无需安装,解压即可使用。 华为eNSP,华三HCL国内主流设备厂家模拟器连接CRT的神器,及时对于新手,也简单上手,文件体积小。适用于中小型企业网络管理员使用。

    piped端口映射工具

    无需安装,解压即可使用。Cisco,华为等主流设备,及时对于新手,也简单上手,文件体积小。适用于中小型企业网络管理员使用。HCL模拟器使用CRT连接,需要使用的都 端口映射工具。很实用的工具。...

    piped端口工具

    HCL模拟器使用CRT连接,需要使用的都 端口映射工具。很实用的工具。有需要的请下载。

    java多线程设计模式详解

    3. 信号量(Semaphore)模式:使用信号量可以控制访问某组资源的线程数量,既可以实现线程间的互斥,也可以实现共享。 4. 条件变量(Condition Variable)模式:这是一种高级的线程间同步机制,允许线程在等待某个...

    华三HCL最新模拟器(关联piped、Wireshark、SecureCRT)

    通过使用HCL模拟器,他可以在虚拟环境中模拟真实的网络架构,并利用piped将模拟器内的服务端口映射到主机的外部端口,从而方便地进行远程访问。同时,借助Wireshark,该管理员可以捕捉到网络数据包并进行深入分析,...

    piped.zip端口连接工具

    crt连接hcl设备工具

    piped.exe端口检测工具

    知道下这个的基本都知道用途了,我就不多说!

    举例讲解Java中Piped管道输入输出流的线程通信控制

    Java中的PipedInputStream和PipedOutputStream是用于实现线程间通信的重要工具,它们构成了所谓的“管道”,使得数据可以在不同线程之间流动。这两个类分别代表管道的输入端和输出端,形成一个数据传递的通道。 ...

    Piped-Backend

    综上所述,Piped-Backend可能是一个使用Java编写的系统,它利用了Netty来构建高效的网络通信管道,并可能集成IPFS以支持分布式文件存储。SponsorBlock的功能可能被整合进这个管道架构中,用于处理和过滤视频内容。...

    Python库 | piped.contrib.manhole-0.1.0.tar.gz

    Python库piped.contrib.manhole-0.1.0是一个用于Python编程的重要工具,它扩展了Piped框架的功能,特别关注远程调试和管理。这个库的核心是`manhole`概念,这是一个安全的网络接口,允许开发者在运行时通过网络连接...

    Python库 | piped.contrib.zookeeper-0.5.1.tar.gz

    开发人员可以利用这个库在Python后端应用中实现Zookeeper的功能,例如服务发现、配置管理等。安装这个库时,需要先解压缩,然后通过pip进行安装。对于熟悉Python和Zookeeper的开发者来说,这个库能简化在Python项目...

    关于core_uses_pid标志对多线程程序无用的调查

    虽然官方并未计划修复此问题,但通过巧妙地利用边界值技巧,我们成功地实现了预期的目标——即使设置了`core_uses_pid=0`,也能确保core文件名中不含PID。这种方法不仅解决了当前的问题,也为类似场景提供了一种可行...

    piped(1).rar

    端口映射工具。无需安装,解压可用。与适用于中小型企业网络管理员使用。HCL模拟关联用

    华三HCL最新模拟器安装与配置(关联piped、Wireshark、SecureCRT)及使用.pdf

    现阶段学习经常使用的路由交换设备主要来自于思科、华为和华三三家 厂商,当然还有中兴、锐捷、神州数码等厂商,这三家的设备操作配置大 致类似,却又不尽相同。因为实体设备通常都非常昂贵,购买设备学习也 ...

Global site tag (gtag.js) - Google Analytics