使用管道流和多线程完成以下任务要求: 一个线程对象t1 会从控制台中不停的读取信息,读到之后把数据交给管道输出流,把数据写到管道里面 ,另一个线程对象t2 不停的使用管道输入流从管道
2017-08-09 19:31
846 查看
//使用管道流和多线程完成以下任务要求:
//一个线程对象t1 会从控制台中不停的读取信息,读到之后把数据交给管道输出流,把数据写到管道里面
//另一个线程对象t2 不停的使用管道输入流从管道里面读取数据,再把读到的数据写到一个文件里面
package day1411;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class demo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
PipedInputStream in=new PipedInputStream();
PipedOutputStream out=new PipedOutputStream(in);
Thread t1=new PipedReadThread(in);
Thread t2=new PipedWriteThread(out);
t1.start();
t2.start();
}}
class PipedReadThread extends Thread{
private PipedInputStream in;
public PipedReadThread(PipedInputStream in) {
// TODO Auto-generated constructor stub
this.in=in;
}
public void run(){
OutputStream out = null;
String filePath = "src/day1411/c.txt";
try {
out = new FileOutputStream(filePath,true);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int len = -1;
try {
while((len=this.in.read())!=-1){
out.write(len);
out.flush();
}
} catch (IOException e) {
//
4000
TODO Auto-generated catch block
e.printStackTrace();
}}}
class PipedWriteThread extends Thread{
private PipedOutputStream out;
public PipedWriteThread(PipedOutputStream out) {
this.out = out;
}
@Override
public void run() {
try {
while(true){
InputStream in = null;
in=System.in;
int i=in.read();
out.write(i);
out.flush();}
} catch (Exception e) {
e.printStackTrace();
}finally {
try { if(out!=null)out.close();}
catch (IOException e) {
e.printStackTrace();
}}}}
//一个线程对象t1 会从控制台中不停的读取信息,读到之后把数据交给管道输出流,把数据写到管道里面
//另一个线程对象t2 不停的使用管道输入流从管道里面读取数据,再把读到的数据写到一个文件里面
package day1411;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class demo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
PipedInputStream in=new PipedInputStream();
PipedOutputStream out=new PipedOutputStream(in);
Thread t1=new PipedReadThread(in);
Thread t2=new PipedWriteThread(out);
t1.start();
t2.start();
}}
class PipedReadThread extends Thread{
private PipedInputStream in;
public PipedReadThread(PipedInputStream in) {
// TODO Auto-generated constructor stub
this.in=in;
}
public void run(){
OutputStream out = null;
String filePath = "src/day1411/c.txt";
try {
out = new FileOutputStream(filePath,true);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int len = -1;
try {
while((len=this.in.read())!=-1){
out.write(len);
out.flush();
}
} catch (IOException e) {
//
4000
TODO Auto-generated catch block
e.printStackTrace();
}}}
class PipedWriteThread extends Thread{
private PipedOutputStream out;
public PipedWriteThread(PipedOutputStream out) {
this.out = out;
}
@Override
public void run() {
try {
while(true){
InputStream in = null;
in=System.in;
int i=in.read();
out.write(i);
out.flush();}
} catch (Exception e) {
e.printStackTrace();
}finally {
try { if(out!=null)out.close();}
catch (IOException e) {
e.printStackTrace();
}}}}
相关文章推荐
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- Java多线程之~~~使用CountDownLatch来同步多个线程实现一个任务
- 编写一个聊天程序:有接收数据部分,和发数据的部分, 这两部分需要同时执行,使用多线程实现,一个控制接收,一个控制发送
- 编写一个生产者,消费者多线程程序,一个线程随机产生数据,另一个线程显示所产生的数据.
- Linux下使用两个线程协作完成一个任务的简易实现
- “黑马程序员”使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印
- 多线程线程池控制一个方法的并发量 限制只有5个线程执行任务
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 使用ajax发起一个请求完成之后再发起另一个请求
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- 现有T1、T2、T3三个线程,你怎样保证T2在T1执行完成之后执行,T3在T2执行完后执行?
- 第九周任务四(建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。)
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 需要求3个长方体的体积,写一个基于对象的程序,数据成员包括 length width height 要求用成员函数实现以下功能
- 第九周实验报告任务4 建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 第九周任务四之 建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- c++第九周【任务4】建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息