java多线程的字符流与字节流
字节流:
package com.wz.thread.stream;
import java.io.PipedOutputStream;
/**
* 字节输入流
* @author Administrator
*
*/
public class WriteData {
public void writeMethod(PipedOutputStream out) {
try {
System.out.println("write:");
for(int i = 0; i < 200; i++) {
String outData = "" + ( i + 1 );
out.write(outData.getBytes());
System.out.print(outData);
}
System.out.println();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.wz.thread.stream;
import java.io.PipedInputStream;
/**
* 字节输出流
* @author Administrator
*
*/
public class ReadData {
public void readMethod(PipedInputStream input) {
try {
System.out.println("read:");
byte[] byteArray = new byte[20];
int readLength = input.read(byteArray);
while(-1 != readLength) {
String newData = new String(byteArray, 0, readLength);
System.out.print(newData);
readLength = input.read(byteArray);
}
System.out.println();
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.wz.thread.stream;
/**
* 写入流线程
* @author Administrator
*
*/
import java.io.PipedOutputStream;
public class ThreadWrite extends Thread{
private WriteData write;
private PipedOutputStream out;
public ThreadWrite(WriteData write, PipedOutputStream out) {
super();
this.write = write;
this.out = out;
}
@Override
public void run() {
super.run();
write.writeMethod(out);
}
}
package com.wz.thread.stream;
/**
* 读出流线程
* @author Administrator
*
*/
import java.io.PipedInputStream;
public class ThreadRead extends Thread{
private ReadData read;
private PipedInputStream input;
public ThreadRead(ReadData read, PipedInputStream input) {
super();
this.read = read;
this.input = input;
}
@Override
public void run() {
super.run();
read.readMethod(input);
}
}
package com.wz.thread.stream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/**
*
* @author Administrator
*
*/
public class Run {
public static void main(String[] args) {
try {
WriteData write = new WriteData();
ReadData read = new ReadData();
PipedOutputStream out = new PipedOutputStream();
PipedInputStream input = new PipedInputStream();
// 这个是相互建立连接
input.connect(out);
//out.connect(input);
ThreadWrite threadWrite = new ThreadWrite(write, out);
ThreadRead threadRead = new ThreadRead(read, input);
// 先读再写 更好的看出效果
threadRead.start();
Thread.sleep(2000);
threadWrite.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
字符流:
package com.wz.thread.readerandwrite;
import java.io.PipedWriter;
/**
* 字符输入流
* @author Administrator
*
*/
public class WriteData {
public void writeMethod(PipedWriter out) {
try {
System.out.println("write:");
for(int i = 0; i < 200; i++) {
String outData = "" + ( i + 1 );
out.write(outData);
System.out.print(outData);
}
System.out.println();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.wz.thread.readerandwrite;
import java.io.PipedReader;
/**
* 字符输出流
* @author Administrator
*
*/
public class ReadData {
public void readMethod(PipedReader input) {
try {
System.out.println("read:");
char[] byteArray = new char[20];
int readLength = input.read(byteArray);
while(-1 != readLength) {
String newData = new String(byteArray, 0, readLength);
System.out.print(newData);
readLength = input.read(byteArray);
}
System.out.println();
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.wz.thread.readerandwrite;
/**
* 写入流线程
* @author Administrator
*
*/
import java.io.PipedWriter;
public class ThreadWrite extends Thread{
private WriteData write;
private PipedWriter out;
public ThreadWrite(WriteData write, PipedWriter out) {
super();
this.write = write;
this.out = out;
}
@Override
public void run() {
super.run();
write.writeMethod(out);
}
}
package com.wz.thread.readerandwrite;
/**
* 读出流线程
* @author Administrator
*
*/
import java.io.PipedReader;
public class ThreadRead extends Thread{
private ReadData read;
private PipedReader input;
public ThreadRead(ReadData read, PipedReader input) {
super();
this.read = read;
this.input = input;
}
@Override
public void run() {
super.run();
read.readMethod(input);
}
}
package com.wz.thread.readerandwrite;
import java.io.PipedReader;
import java.io.PipedWriter;
/**
*
* @author Administrator
*
*/
public class Run {
public static void main(String[] args) {
try {
WriteData write = new WriteData();
ReadData read = new ReadData();
PipedWriter out = new PipedWriter();
PipedReader input = new PipedReader();
// 这个是相互建立连接
input.connect(out);
//out.connect(input);
ThreadWrite threadWrite = new ThreadWrite(write, out);
ThreadRead threadRead = new ThreadRead(read, input);
// 先读再写 更好的看出效果
threadRead.start();
Thread.sleep(2000);
threadWrite.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
java多线程的字符流与字节流的更多相关文章
- java学习之字符流与字节流的转换
package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...
- Java——文件操作字符流和字节流的区别
转:http://blog.csdn.net/joephoenix/articles/2283165.aspx java的IO流分两种流 字节流 InputStream OutputStream 字符 ...
- Java IO编程——字符流与字节流
在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...
- 理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java字符流和字节流对文件操作
记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询.Java的IO流分为字符流(Reader,Writ ...
- Java中字符流与字节流的区别
字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
第一讲 IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- [Java] I/O底层原理之一:字符流、字节流及其源码分析
关于 I/O 的类可以分为四种: 关于字节的操作:InputStream 和 OutPutStream: 关于字符的操作:Writer 和 Reader: 关于磁盘的操作:File: 关于网络的操作: ...
随机推荐
- Python中的threadlocal
在多线程中,对于共有的共享数据的操作,需要加锁. 但是,对于局部变量,则在每个线程之间相互独立. 假如线程T想要把函数F1中的局部变量V1传到函数F2中去,F2再想把这个变量传到F3中去,一层一层地传 ...
- Jquery瀑布流布局,jQuery Wookmark Load 示例
瀑布流布局非常适合大量图片的展示,一改过去裁剪图片尺寸同意的排版,每张图片都能完全展示,并错落有致,让人眼前一亮. 注意事项:img元素的width和weight属性需要写,否则定位会不准确. 查看j ...
- spring框架学习笔记5:SpringAOP示例
1.导包: 导入spring中的这两个包 再导入其他包(网上下载): 2.准备目标对象: package service; public class UserServiceImpl implement ...
- @Cacheable的实现原理
如果你用过Spring Cache,你一定对这种配置和代码不陌生: <cache:annotation-driven cache-manager="cacheManager" ...
- github上传时出现error: src refspec master does not match any解决办法
github上传时出现error: src refspec master does not match any解决办法 这个问题,我之前也遇到过,这次又遇到了只是时间间隔比较长了,为了防止以后再遇到类 ...
- Scrum 冲刺 第五日
目录 要求 项目链接 燃尽图 问题 今日任务 明日计划 成员贡献量 要求 各个成员今日完成的任务(如果完成的任务为开发或测试任务,需给出对应的Github代码签入记录截图:如果完成的任务为调研任务,需 ...
- 算法第四版学习笔记之优先队列--Priority Queues
软件:DrJava 参考书:算法(第四版) 章节:2.4优先队列(以下截图是算法配套视频所讲内容截图) 1:API 与初级实现 2:堆得定义 3:堆排序 4:事件驱动的仿真 优先队列最重要的操作就是删 ...
- Swift 2.2 的新特性
导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中Ted Kremenek所撰写的"Swift 2.2 Released!"文章进行了关于S ...
- 部分和问题 nyoj
部分和问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K. 输入 首先, ...
- sql 几种循环方式
1:游标方式 ALTER PROCEDURE [dbo].[testpro] as ) --日期拼接 ) --仪表编号 ) --数据采集表 ) --数据采集备份表 ) ) begin set @yea ...