鉴于上次惨痛的教训,我决定重新认识下java。昨天没事儿的时候把《疯狂java讲义》(李刚著)中关于线程通信的部分例子敲了一遍。coding~
代码:
package thread.pipe;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PipedReader;
public class ReaderThread extends Thread {
private PipedReader pr;
private BufferedReader br;
public ReaderThread() {
}
public ReaderThread(PipedReader pr) {
this.pr = pr;
this.br = new BufferedReader(pr);
}
public void run() {
String buf = null;
try {
while ((buf = br.readLine()) != null) {
System.out.println(buf);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package thread.pipe;
import java.io.IOException;
import java.io.PipedWriter;
public class WriterThread extends Thread {
String[] books = new String[] { "php", "java", "C++", "ajax" };
private PipedWriter pw;
public WriterThread() {
}
public WriterThread(PipedWriter pw) {
this.pw = pw;
}
public void run() {
try {
for (int i = 0; i < 100; i++) {
pw.write(books[i % 4]+":"+i+ "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (pw != null)
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package thread.pipe;
import java.io.PipedReader;
import java.io.PipedWriter;
public class Test {
public static void main(String[] args) {
PipedWriter pw = null;
PipedReader pr = null;
try {
pw=new PipedWriter();
pr=new PipedReader();
pr.connect(pw);
new WriterThread(pw).start();
new ReaderThread(pr).start();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
PipedWriter、PipedReader做connect链接完成线程之间通信。
分享到:
相关推荐
在Java编程中,多线程通信是构建高效并发应用程序的关键技术。服务器多线程通信尤其重要,因为它允许服务器同时处理多个客户端请求,提高系统资源利用率并优化响应时间。本篇文章将深入探讨Java中的多线程通信,以及...
在Java编程中,多线程通信是一个重要的概念,特别是在并发编程中。`ThreadDemo`示例可能演示了...通过分析和学习这个示例,开发者可以更好地理解和掌握Java多线程通信的实践技巧,从而编写出更加高效、可靠的并发程序。
在本文中,我们将深入探讨如何使用Visual Studio 2017和C++来实现TCP套接字的多线程通信。TCP(传输控制协议)是一种面向连接、可靠的、基于字节流的通信协议,广泛应用于互联网上的各种服务。多线程技术则允许我们...
在编程领域,多线程通信是提升程序效率和并发能力的重要技术。特别是在处理大量数据时,如读写文件,多线程可以同时执行不同的任务,从而显著提高整体性能。本项目着重探讨如何在多线程环境中实现安全有效的文件读写...
C#是一种广泛用于构建桌面和Web应用程序的编程语言,它提供了强大的网络编程能力,其中包括使用TCP Socket进行多线程通信。本篇文章将深入探讨C#中基于TCP的Socket多线程通信,包括服务端和客户端的实现。 TCP...
多线程通信是另一个重要的主题,尤其在复杂的软件系统中。当一个程序需要执行多个任务并行时,多线程技术就显得尤为重要。在QT5中,QThread类被用来创建和管理线程。每个QThread对象代表一个独立的执行线程。然而,...
在IT领域,网络通信是计算机系统之间交换信息的关键技术,而TCP(传输控制协议)与Socket接口是实现网络通信的基础。本项目“多线程实现基于TCP...这个项目对于理解网络编程和多线程技术的结合应用具有很高的学习价值。
在计算机编程中,多线程是并发执行任务的一种方式,特别是在多核...通过对"MultiThread7"这个示例的学习,开发者可以更深入地理解Windows下的线程通信机制,并将其应用到自己的项目中,提升软件的性能和用户体验。
多线程通信是并发编程中的关键概念,尤其是在需要执行异步任务或者充分利用多核处理器性能时。MFC通过消息队列和消息映射机制,为多线程间的通信提供了便利。 首先,我们需要理解MFC的主线程和工作线程的概念。主线...
通过学习和实践C#的TCP多线程通信,开发者可以构建出能够处理大量并发连接的健壮网络服务。这种技术广泛应用于聊天应用、在线游戏、文件传输和其他需要实时交互的应用中。理解并掌握这些概念对于任何想要在C#环境中...
在IT领域,多线程通信是并发编程中的一个重要概念,特别是在网络编程中,如UDP(User Datagram Protocol)通信。本文将详细讲解如何使用C语言在Visual Studio 2017中实现Picket多线程通信,以及如何利用select系统...
通过学习和分析这个例子,你可以了解到实际项目中如何解决串口通信和多线程编程的问题,提升自己的Delphi开发技能。 总之,Delphi API串口通信和多线程编程是开发高效、稳定应用的关键技术。理解和掌握这些技术,...
多线程是计算机编程中的...这个学习汇总资料将涵盖以上提到的各个知识点,通过实例解析、代码示例和经典问题分析,帮助你深入理解多线程编程,提升并发编程能力。无论你是初学者还是经验丰富的开发者,都可以从中受益。
在"学习多线程之一:线程通信--利用事件对象.zip"这个压缩包中,包含的"www.pudn.com.txt"可能是对教程的介绍或引用资料,而"Thread1"可能是一个源代码文件,展示了如何使用事件对象进行线程通信的实际示例。...
通过这个Java项目,我们可以学习如何使用Java原生SDK实现Socket通信,理解单线程和多线程在并发处理上的优缺点,以及如何根据实际需求选择合适的通信模型。同时,该项目还可以作为进一步研究高级网络编程、线程管理...
在Linux操作系统中,多线程通信是一个复杂但重要的主题,特别是在网络编程中。本文将深入探讨如何使用pthread库和socket接口来实现多线程网络通信。`pthread_socket`这个文件名暗示了它是实现这一功能的核心代码。 ...
在IT领域,多线程通信是一项关键的技术,尤其在客户端-服务器架构中,它使得程序能够同时处理多个请求,提高系统效率和响应速度。...通过阅读“多线程.txt”文件,你可以进一步学习关于多线程通信的具体实践和案例。
在编程领域,多线程应用是提升程序性能和并发处理能力的重要手段。然而,当一个应用程序中有多个线程运行时,它们可能需要共享数据或协调工作,这就涉及到线程间通信(Inter-Thread Communication,简称ITC)。MFC...
利用 Socket 实现多线程通信,是学习 Socket 编程的好文档