* gnu/java/nio/SelectorImpl.java
(selectThreadMutex): New field. (selectThread): New field. (unhandledWakeup): New field. (implCloseSelector): Added skeleton code which synchronizes as per Sun JRE JavaDoc. (keys): Throw ClosedSelectorException if selector is closed. (selectNow): Added comment that we're faking out an immediate select with a one-microsecond-timeout one. (select): Use 0 instead of -1 for infinite timeout. (implSelect): Changed comment in declaration. (select): Added synchronized to method declaration. Added synchronization and wakeup support as per Sun JRE JavaDoc. (selectedKeys): Throw ClosedSelectorException if selector is closed. (wakeup): Implemented. (deregisterCancelledKeys): Synchronize on cancelled key set before deregistering. (register): Synchronize on key set before registering. * java/nio/channels/spi/AbstractSelector.java Added import for java.nio.channels.ClosedSelectorException. (close): Added synchronized to method declaration. (cancelledKeys): Throw ClosedSelectorException if selector is closed. (cancelKey): Synchronize on cancelled key set before key. From-SVN: r74879
This commit is contained in:
parent
59687e1890
commit
677f99cce5
3 changed files with 248 additions and 82 deletions
|
@ -39,6 +39,7 @@ exception statement from your version. */
|
|||
package java.nio.channels.spi;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.channels.ClosedSelectorException;
|
||||
import java.nio.channels.SelectionKey;
|
||||
import java.nio.channels.Selector;
|
||||
import java.util.Set;
|
||||
|
@ -64,7 +65,7 @@ public abstract class AbstractSelector extends Selector
|
|||
*
|
||||
* @exception IOException If an error occurs
|
||||
*/
|
||||
public final void close () throws IOException
|
||||
public final synchronized void close () throws IOException
|
||||
{
|
||||
if (closed)
|
||||
return;
|
||||
|
@ -102,12 +103,18 @@ public abstract class AbstractSelector extends Selector
|
|||
|
||||
protected final Set cancelledKeys()
|
||||
{
|
||||
if (!isOpen())
|
||||
throw new ClosedSelectorException();
|
||||
|
||||
return cancelledKeys;
|
||||
}
|
||||
|
||||
final void cancelKey (AbstractSelectionKey key)
|
||||
{
|
||||
cancelledKeys.remove (key);
|
||||
synchronized (cancelledKeys)
|
||||
{
|
||||
cancelledKeys.remove(key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue