博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
08 【多线程高并发】Java线程间通信的方式
阅读量:1886 次
发布时间:2019-04-26

本文共 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) {
} } }}

转载地址:http://dcwdf.baihongyu.com/

你可能感兴趣的文章
正则表达式
查看>>
redis内存配置以及相关策略
查看>>
java8 Stream流
查看>>
mysql自增id与uuid的区别
查看>>
进程、线程
查看>>
js提取字符串中的数字
查看>>
js实现自定义title提示效果
查看>>
利用pdfplumber提取pdf文档内容
查看>>
js实现对元素进行解释说明
查看>>
ElasticSearch,es head,kibana安装与配置
查看>>
npm设置淘宝镜像
查看>>
jQuery操作下拉框select
查看>>
JDK环境配置——cmd 输入java,javac,java -version无效解决方案
查看>>
Arduino——安装ESP8266开发包
查看>>
elasticsearch核心概念
查看>>
elasticsearch配置ik分词器插件
查看>>
elasticsearch基本操作
查看>>
超链接样式设置
查看>>
springboot集成elasticsearch(10)
查看>>
checkbox选择框选中状态获取
查看>>