⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pipetest.java

📁 nanjing university cs 的java课件。 对新手很有用。付课件中源码。
💻 JAVA
字号:
//两个线程通过管道I/O类实现读写
import java.io.*;

//创建一个新类来管理管道的同步问题
class Shared{
	DataOutputStream dos;
	DataInputStream dis;
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	boolean canRead = false;
	
	public Shared(PipedOutputStream pos, PipedInputStream pis){
		this.dos = new DataOutputStream(pos);
		this.dis = new DataInputStream(pis);
	}
	
	synchronized void write() throws IOException{
		if(!canRead){
			System.out.print("writer>>");
			String temp = br.readLine();
			dos.writeUTF(temp);
			canRead = true;
		}
	}
	
	synchronized void read() throws IOException{
		if(canRead){
			System.out.print("read<<");
			String temp = dis.readUTF();
			System.out.println(temp);
			canRead = false;
		}
	}
	
}

class Write extends Thread{
	Shared shared;
	DataOutputStream out;
	Write(Shared shared){
		this.shared = shared;
	}
	
	public void run(){
		try{
			while(true){
				shared.write();
			}
		}
		catch(Exception e){
		}
	}	
}

class Read extends Thread{
	Shared shared;
	DataInputStream in;
	Read(Shared shared){
		this.shared = shared;
	}
	public void run(){
		try{
			while(true){
				shared.read();
			}
		}
		catch(Exception e){}
	}	
}

public class PipeTest{
	public static void main(String[] args){
		try{
			PipedOutputStream out=new PipedOutputStream(); 
			//PipedInputStream in=new PipedInputStream();	
			//可以直接通过构造函数将两个管道连接起来
			PipedInputStream in=new PipedInputStream(out);	
			//out.connect(in);
			Shared shared = new Shared(out, in);
			
   			Read reader=new Read(shared);
			Write writer=new Write(shared);
			writer.start();
			reader.start();
		}
		catch(Exception e){}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -