Commit a7fabf19 by Bryce McKinlay Committed by Bryce McKinlay

* java/io/PipedReader: Synchronize on "lock" instead of this.

From-SVN: r38731
parent 75b7557d
2001-01-06 Bryce McKinlay <bryce@albatross.co.nz>
* java/io/PipedReader: Synchronize on "lock" instead of this.
2001-01-05 Bryce McKinlay <bryce@albatross.co.nz>
* java/lang/Thread.java: Update comment.
......@@ -6,7 +10,7 @@
* java/io/PipedOutputStream: Updated to match new PipedInputStream.
* java/io/PipedReader: New implementation based on new
PipedInputStream.
* java/io/PipedWriter: Updated to match new PipedOutputStream.
* java/io/PipedWriter: Updated to match new PipedReader.
2001-01-03 Tom Tromey <tromey@redhat.com>
......
......@@ -141,9 +141,11 @@ public class PipedReader extends Reader
* put it here in order to support that bizarre recieve(int)
* method.
*/
synchronized void receive(char[] buf, int offset, int len)
void receive(char[] buf, int offset, int len)
throws IOException
{
synchronized (lock)
{
if (closed)
throw new IOException ("Pipe closed");
......@@ -157,8 +159,8 @@ public class PipedReader extends Reader
while (in == out)
{
// The pipe is full. Wake up any readers and wait for them.
notifyAll();
wait();
lock.notifyAll();
lock.wait();
// The pipe could have been closed while we were waiting.
if (closed)
throw new IOException ("Pipe closed");
......@@ -188,7 +190,8 @@ public class PipedReader extends Reader
in = 0;
}
// Notify readers that new data is in the pipe.
notifyAll();
lock.notifyAll();
}
}
/**
......@@ -240,9 +243,11 @@ public class PipedReader extends Reader
* @exception IOException If <code>close()/code> was called on this Piped
* Reader.
*/
public synchronized int read(char[] buf, int offset, int len)
public int read(char[] buf, int offset, int len)
throws IOException
{
synchronized (lock)
{
if (source == null)
throw new IOException ("Not connected");
if (closed)
......@@ -256,7 +261,7 @@ public class PipedReader extends Reader
{
if (source.closed)
return -1;
wait();
lock.wait();
}
}
catch (InterruptedException ix)
......@@ -297,17 +302,20 @@ public class PipedReader extends Reader
{
// Notify any waiting Writer that there is now space
// to write.
notifyAll();
lock.notifyAll();
return total;
}
}
}
}
public synchronized boolean ready() throws IOException
public boolean ready() throws IOException
{
// The JDK 1.3 implementation does not appear to check for the closed or
// unconnected stream conditions here.
synchronized (lock)
{
if (in < 0)
return false;
......@@ -319,6 +327,7 @@ public class PipedReader extends Reader
return (count > 0);
}
}
/**
* This methods closes the stream so that no more data can be read
......@@ -326,10 +335,13 @@ public class PipedReader extends Reader
*
* @exception IOException If an error occurs
*/
public synchronized void close() throws IOException
public void close() throws IOException
{
synchronized (lock)
{
closed = true;
// Wake any thread which may be in receive() waiting to write data.
notifyAll();
lock.notifyAll();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment