private byte getChar() { try { lock.getBusyFlag(); byte c = result[0]; System.arraycopy(result, 1, result, 0, --reslen); full.cvSignal(); return c; } finally { lock.freeBusyFlag(); } }
private byte[] getChars(int chars) { try { lock.getBusyFlag(); byte c[] = new byte[chars]; System.arraycopy(result, 0, c, 0, chars); reslen -= chars; System.arraycopy(result, chars, result, 0, reslen); full.cvSignal(); return c; } finally { lock.freeBusyFlag(); } }
private void putChar(byte c) { try { lock.getBusyFlag(); while ((reslen == result.length) && (!EOF)) { try { full.cvWait(); } catch (InterruptedException ie) { } } if (!EOF) { result[reslen++] = c; empty.cvSignal(); } } finally { lock.freeBusyFlag(); } }