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

进程与线程

开发平台:

Java

  1. import java.io.*;
  2. // uses ThreadedInputStream
  3. public class BufferedThreadedInputStream 
  4. extends FilterInputStream {
  5. // fixed class that does *not* have a synchronized close()
  6. private static class BISFix extends BufferedInputStream {
  7. public BISFix(InputStream rawIn, int buffSize) {
  8. super(rawIn, buffSize);
  9. }
  10. public void close() throws IOException {
  11. if ( in != null ) {
  12. try {
  13. in.close();
  14. } finally {
  15. in = null;
  16. }
  17. }
  18. }
  19. }
  20. public BufferedThreadedInputStream(
  21. InputStream rawIn, 
  22. int bufferSize
  23. ) {
  24. super(rawIn); // super-class' "in" is set below
  25. // rawIn -> BufferedIS -> ThreadedIS -> 
  26. //       BufferedIS -> read()
  27. BISFix bis = new BISFix(rawIn, bufferSize);
  28. ThreadedInputStream tis = 
  29. new ThreadedInputStream(bis, bufferSize);
  30. // Change the protected variable 'in' from the 
  31. // superclass from rawIn to the correct stream.
  32. in = new BISFix(tis, bufferSize);
  33. }
  34. public BufferedThreadedInputStream(InputStream rawIn) {
  35. this(rawIn, 2048);
  36. }
  37. // Overridden to show that InterruptedIOException might 
  38. // be thrown.
  39. public int read() 
  40. throws InterruptedIOException, IOException {
  41. return in.read();
  42. }
  43. // Overridden to show that InterruptedIOException might 
  44. // be thrown.
  45. public int read(byte[] b) 
  46. throws InterruptedIOException, IOException {
  47. return in.read(b);
  48. }
  49. // Overridden to show that InterruptedIOException might 
  50. // be thrown.
  51. public int read(byte[] b, int off, int len) 
  52. throws InterruptedIOException, IOException {
  53. return in.read(b, off, len);
  54. }
  55. // Overridden to show that InterruptedIOException might 
  56. // be thrown.
  57. public long skip(long n) 
  58. throws InterruptedIOException, IOException {
  59. return in.skip(n);
  60. }
  61. // The remainder of the methods are directly inherited from 
  62. // FilterInputStream and access "in" in the much the same 
  63. // way as the methods above do.
  64. }