PipedBytes.java
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:2k
源码类别:

进程与线程

开发平台:

Java

  1. import java.io.*;
  2. public class PipedBytes extends Object {
  3. public static void writeStuff(OutputStream rawOut) {
  4. try {
  5. DataOutputStream out = new DataOutputStream(
  6. new BufferedOutputStream(rawOut));
  7. int[] data = { 82, 105, 99, 104, 97, 114, 100, 32, 
  8.    72, 121, 100, 101 };
  9. for ( int i = 0; i < data.length; i++ ) {
  10. out.writeInt(data[i]);
  11. }
  12. out.flush();
  13. out.close();
  14. } catch ( IOException x ) {
  15. x.printStackTrace();
  16. }
  17. }
  18. public static void readStuff(InputStream rawIn) {
  19. try {
  20. DataInputStream in = new DataInputStream(
  21. new BufferedInputStream(rawIn));
  22. boolean eof = false;
  23. while ( !eof ) {
  24. try {
  25. int i = in.readInt();
  26. System.out.println("just read: " + i);
  27. } catch ( EOFException eofx ) {
  28. eof = true;
  29. }
  30. }
  31. System.out.println("Read all data from the pipe");
  32. } catch ( IOException x ) {
  33. x.printStackTrace();
  34. }
  35. }
  36. public static void main(String[] args) {
  37. try {
  38. final PipedOutputStream out = 
  39. new PipedOutputStream();
  40. final PipedInputStream in = 
  41. new PipedInputStream(out);
  42. Runnable runA = new Runnable() {
  43. public void run() {
  44. writeStuff(out);
  45. }
  46. };
  47. Thread threadA = new Thread(runA, "threadA");
  48. threadA.start();
  49. Runnable runB = new Runnable() {
  50. public void run() {
  51. readStuff(in);
  52. }
  53. };
  54. Thread threadB = new Thread(runB, "threadB");
  55. threadB.start();
  56. } catch ( IOException x ) {
  57. x.printStackTrace();
  58. }
  59. }
  60. }