多线程编程专题
使用管道流实现线程间数据传输
public class Test1 {
public static void main(String[] args) {
PipedInputStream pin = new PipedInputStream();
PipedOutputStream pout = new PipedOutputStream();
try {
pin.connect(pout);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Thread t1 = new Sender(pout);
Thread t2 = new Receiver(pin);
t1.start();
t2.start();
}
}
class Sender extends Thread{
private DataOutputStream dos;
public Sender(PipedOutputStream p){
dos = new DataOutputStream(p);
}
public void run(){
try {
dos.writeUTF("Hello World");
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Receiver extends Thread{
private DataInputStream dis;
public Receiver(PipedInputStream p){
dis = new DataInputStream(p);
}
public void run(){
try {
System.out.println(dis.readUTF());
dis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
即使同步类vector,其方法为同步方法,但无法做到真正的线程安全,例见课本187.