1
+ package com .brianway .learning .java .multithread .communication .example12 ;
2
+
3
+ import java .io .IOException ;
4
+ import java .io .PipedInputStream ;
5
+ import java .io .PipedOutputStream ;
6
+
7
+ /**
8
+ * Created by Brian on 2016/4/14.
9
+ */
10
+
11
+ /**
12
+ * P173
13
+ * 通过管道进行线程间通信:字节流
14
+ *
15
+ * 字符流PipedWriter,PipedReader,同理。
16
+ */
17
+ public class Run12_pipeInputOutput {
18
+ public static void main (String [] args ) {
19
+ try {
20
+ WriteData writeData = new WriteData ();
21
+ ReadData readData = new ReadData ();
22
+
23
+ PipedInputStream inputStream = new PipedInputStream ();
24
+ PipedOutputStream outputStream = new PipedOutputStream ();
25
+
26
+ //inputStream.connect(outputStream);
27
+ outputStream .connect (inputStream );
28
+
29
+ ThreadRead threadRead = new ThreadRead (readData ,inputStream );
30
+ threadRead .start ();
31
+
32
+ Thread .sleep (2000 );
33
+
34
+ ThreadWrite threadWrite = new ThreadWrite (writeData ,outputStream );
35
+ threadWrite .start ();
36
+
37
+ } catch (IOException e ) {
38
+ e .printStackTrace ();
39
+ }catch (InterruptedException e ){
40
+ e .printStackTrace ();
41
+ }
42
+ }
43
+ }
44
+
45
+
46
+ /*
47
+ 输出:
48
+ read :
49
+ write :
50
+ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
51
+ 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
52
+
53
+ --------------
54
+ 取消注释//inputStream.connect(outputStream);
55
+ 输出:
56
+ java.io.IOException: Already connected
57
+ at java.io.PipedOutputStream.connect(PipedOutputStream.java:100)
58
+ at com.brianway.learning.java.multithread.communication.example12.Run12_pipeInputOutput.main(Run12_pipeInputOutput.java:25)
59
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
60
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
61
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
62
+ at java.lang.reflect.Method.invoke(Method.java:483)
63
+ at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
64
+
65
+
66
+ */
0 commit comments