`
粟谷_sugu
  • 浏览: 26256 次
社区版块
存档分类
最新评论

java线程同步之管道通信

    博客分类:
  • java
阅读更多
之前看书的时候就看过,线程之间通信的两种方式,共享变量和管道通信,一直不知道管道通信是什么,今天终于看到了,话不多数,直接show the code
public class Pipe {
    public static void main(String[] args) throws IOException, InterruptedException {
        PipedWriter out = new PipedWriter();
        PipedReader in = new PipedReader();
        int recive = 0;
        out.connect(in);
        Thread printThread = new Thread(new PrintThread(in),"printThread");
        TimeUnit.SECONDS.sleep(5);
        printThread.start();
        while ((recive = System.in.read()) != -1){
            out.write(recive);
        }
    }
    static class PrintThread implements Runnable{

        private PipedReader in;

        public PrintThread(PipedReader in) {
            this.in = in;
        }

        public void run() {
            try {
                int recive = 0;
                while ( (recive = in.read())  != -1){
                    System.out.print( (char) recive);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

//控制台输出:
123
printThread 1
printThread 2
printThread 3

注意一点就是
        out.connect(in);

这一句,其实很好理解,两个管道要连通才可以生效,不然就会出问题
分享到:
评论

相关推荐

    java进程间管道通信1

    Java进程间的管道通信是一种进程间通信(IPC,Inter-Process Communication)的方式,它允许不同的Java进程之间通过共享的管道进行数据传输。虽然Java标准库不直接支持创建管道文件,但可以借助于操作系统提供的功能...

    java 进程间利用管道通信实例

    总结来说,这个"java 进程间利用管道通信实例"是一个展示如何在Java中使用管道进行进程间通信的教学项目。通过学习和理解这个例子,开发者可以更好地理解和运用这一基础的IPC技术,为构建多进程系统奠定基础。

    Java中利用管道实现线程间的通讯

    在Java中,管道(Pipe)流提供了一种有效的方法,允许数据从一个线程传递到另一个线程,从而实现线程间的通信。管道通常由两个流组成:一个输出流用于写入数据,另一个输入流用于读取数据。这种方式使得数据可以在不...

    java多线程编程之管道通信详解

    总结来说,Java中的管道通信为多线程间的同步和数据交换提供了一种简洁、高效的方式。通过使用`PipeInputStream`、`PipedOutputStream`以及它们的字符流版本,开发者可以构建出能够协同工作的线程,实现复杂的并发...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    - 管道(Pipe)和缓冲区(Buffer):Java的`PipedInputStream`和`PipedOutputStream`可用于线程间的通信。 6. **高级主题** - 线程池:通过`ExecutorService`和`ThreadPoolExecutor`管理线程,提高性能和资源利用...

    java实现多线程间的通信

    本文将探讨线程间通信的概念,分析基于Java的多线程程序的关键技术,并指出设计多线程程序时需要充分理解线程同步机制以及操作系统进程之间的关系,以便优化程序性能。 关键词:多线程、同步 在当前大多数操作系统...

    深入理解JAVA多线程之线程间的通信方式

    在Java多线程编程中,线程间的通信是至关重要的,因为它确保了多个并发执行的任务能够协调工作,避免数据不一致性和死锁等问题。本文将深入探讨两种主要的线程间通信方式:同步机制和基于轮询的方式。 1. 同步机制...

    Java多线程设计模式(带源码)

    5. 同步器模式:如`CountDownLatch`、`CyclicBarrier`和`Semaphore`,它们用于协调多个线程间的同步,等待特定数量的任务完成或达到某个条件。 6. 管道模式:线程间通过管道(PipedInputStream/PipedOutputStream)...

    线程的几种控制方式以及线程间的几种通信方式

    3. **线程同步**:为了避免多个线程同时访问共享资源导致数据不一致,引入了线程同步机制。主要包括Java的`synchronized`关键字、Python的`Lock`对象等。 4. **线程间通信**:线程间通信允许线程之间交换信息,Java...

    Java多线程入门介绍.pdf

    本文详细介绍了Java多线程的基础知识,包括线程的概念、多线程的实现方法、线程同步机制以及线程间的通信等内容。理解这些基础知识对于开发高性能、高并发的应用程序至关重要。希望本文能够帮助读者更好地理解和掌握...

    kafka java单线程,多线程,多线程管理器代码

    在本文中,我们将深入探讨Apache Kafka的Java编程实践,特别是关注单线程和多线程在Kafka生产者与消费者中的应用,以及多线程管理器的实现。Apache Kafka是一个分布式流处理平台,广泛用于实时数据管道和消息传递。...

    Java多线程文章系列.pdf

    - `synchronized`修饰的方法确保线程同步访问。 - **synchronized关键字**: - 编译结果展示了`synchronized`的关键作用。 - **monitorenter和monitorexit**: - JVM层面实现`synchronized`的关键字。 #### 十、...

    java多线程设计模式

    Java的`PipedInputStream`和`PipedOutputStream`可以实现线程间的管道通信,一个线程写入数据,另一个线程读取数据。这种模式常用于线程间的简单数据传递。 5. 守护线程模式: 守护线程通常用于为其他线程提供服务...

    java多线程设计模式详解+源码

    2. **线程状态**:Java线程有五种状态,包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。了解这些状态有助于理解和解决线程同步问题。 3. **线程同步**:为避免多线程...

    Java多线程技术探讨.doc

    - **线程的同步与通信**:Java提供了多种同步机制,如synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口(如ReentrantLock)来防止数据竞争和死锁。 3. 守护线程 - **守护线程**:通过调用...

    Java并发编程进程和线程之由来Java开发Java经验技

    线程间的通信主要依赖于同步机制,如`synchronized`关键字、`wait()`, `notify()`以及`java.util.concurrent`包中的各种工具类。 **3. Java并发编程基础** Java提供了丰富的并发编程工具,包括: - **线程池**: `...

    java多线程设计模式详解(PDF及源码)

    书中还可能涉及线程同步和互斥的机制,如synchronized关键字、wait()、notify()和notifyAll()方法,以及高级特性如volatile、java.util.concurrent.atomic包下的原子变量类等。 此外,书中还会讲解如何避免和解决...

    java多线程设计模式详解

    2. 管道流(Piped Streams)模式:允许两个线程通过输入输出流进行通信,适用于线程间需要传递数据流的场合。 3. 令牌桶(Token Bucket)模式:这种模式适用于控制访问频率,如限流,可以保证在高并发情况下对共享...

Global site tag (gtag.js) - Google Analytics