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

进程与线程

开发平台:

Java

  1. import java.io.*;
  2. public class PipedCharacters extends Object {
  3. public static void writeStuff(Writer rawOut) {
  4. try {
  5. BufferedWriter out = new BufferedWriter(rawOut);
  6. String[][] line = {
  7. { "Java", "has", "nice", "features." },
  8. { "Pipes", "are", "interesting." },
  9. { "Threads", "are", "fun", "in", "Java." },
  10. { "Don't", "you", "think", "so?" }
  11. };
  12. for ( int i = 0; i < line.length; i++ ) {
  13. String[] word = line[i];
  14. for ( int j = 0; j < word.length; j++ ) {
  15. if ( j > 0 ) {
  16. // put a space between words
  17. out.write(" ");
  18. out.write(word[j]);
  19. }
  20. // mark the end of a line
  21. out.newLine();
  22. }
  23. out.flush();
  24. out.close();
  25. } catch ( IOException x ) {
  26. x.printStackTrace();
  27. }
  28. }
  29. public static void readStuff(Reader rawIn) {
  30. try {
  31. BufferedReader in = new BufferedReader(rawIn);
  32. String line;
  33. while ( ( line = in.readLine() ) != null ) {
  34. System.out.println("read line: " + line);
  35. }
  36. System.out.println("Read all data from the pipe");
  37. } catch ( IOException x ) {
  38. x.printStackTrace();
  39. }
  40. }
  41. public static void main(String[] args) {
  42. try {
  43. final PipedWriter out = new PipedWriter();
  44. final PipedReader in = new PipedReader(out);
  45. Runnable runA = new Runnable() {
  46. public void run() {
  47. writeStuff(out);
  48. }
  49. };
  50. Thread threadA = new Thread(runA, "threadA");
  51. threadA.start();
  52. Runnable runB = new Runnable() {
  53. public void run() {
  54. readStuff(in);
  55. }
  56. };
  57. Thread threadB = new Thread(runB, "threadB");
  58. threadB.start();
  59. } catch ( IOException x ) {
  60. x.printStackTrace();
  61. }
  62. }
  63. }