08 【多线程高并发】Java线程间通信的方式
发布日期:2021-06-29 15:36:06 浏览次数:2 分类:技术文章

本文共 1369 字,大约阅读时间需要 4 分钟。

【多线程高并发】Java线程间通信的方式

Java线程间通信的方式:

  • 共享变量;
  • 等待/通知;
  • 管道流;

1.共享变量

  • volatile修饰的变量,线程间可见,可使用这种变量作为线程间传递消息的媒介;

2.等待/通知

  • 同步代码中利用锁对象的wait和notify方法来进行通信;

3.管道流

  • 管道输入流/输出流 和普通的文件输入/输出流 不同之处在于,它主要用于线程之间的数据传输,而传输的媒介为内存;
  • 管道输入/输出流主要包括了如下4种具体实现:PipedOutputStream、PipedInputStream、PipedReader和PipedWriter,前两种面向字节,而后两种面向字符。
package com.demo.other;import java.io.PipedReader;import java.io.PipedWriter;public class Piped {
public static void main(String[] args) throws Exception {
PipedWriter out = new PipedWriter(); PipedReader in = new PipedReader();// 将输出流和输入流进行连接,否则在使用时会抛出IOException out.connect(in); Thread printThread = new Thread(new Print(in), "PrintThread"); printThread.start(); int receive = 0; try {
while ((receive = System.in.read()) != -1) {
out.write(receive); } } finally {
out.close(); } } static class Print implements Runnable {
private PipedReader in; public Print(PipedReader in) {
this.in = in; } @Override public void run() {
int receive = 0; try {
while ((receive = in.read()) != -1) {
System.out.print((char) receive); } } catch (Exception ex) {
} } }}

转载地址:https://codingchaozhang.blog.csdn.net/article/details/115285036 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【数据结构与算法】什么是跳表?通俗易懂来理解跳表
下一篇:【大话Mysql面试】-Mysql常见面试题目

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月29日 04时58分57秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章