< prev index next >

src/java.base/windows/classes/sun/nio/ch/WindowsSelectorImpl.java

Print this page
rev 49242 : [mq]: selector-cleanup

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -46,11 +46,11 @@
  *
  * @author Konstantin Kladko
  * @author Mark Reinhold
  */
 
-final class WindowsSelectorImpl extends SelectorImpl {
+class WindowsSelectorImpl extends SelectorImpl {
     // Initial capacity of the poll array
     private final int INIT_CAP = 8;
     // Maximum number of sockets for select().
     // Should be INIT_CAP times a power of 2
     private static final int MAX_SELECTABLE_FDS = 1024;

@@ -79,11 +79,11 @@
 
     // File descriptors corresponding to source and sink
     private final int wakeupSourceFd, wakeupSinkFd;
 
     // Lock for close cleanup
-    private Object closeLock = new Object();
+    private final Object closeLock = new Object();
 
     // Maps file descriptors to their indices in  pollArray
     private static final class FdMap extends HashMap<Integer, MapEntry> {
         static final long serialVersionUID = 0L;
         private MapEntry get(int desc) {

@@ -133,10 +133,11 @@
         wakeupSinkFd = ((SelChImpl)sink).getFDVal();
 
         pollWrapper.addWakeupSocket(wakeupSourceFd, 0);
     }
 
+    @Override
     protected int doSelect(long timeout) throws IOException {
         if (channelArray == null)
             throw new ClosedSelectorException();
         this.timeout = timeout; // set selector timeout
         processDeregisterQueue();

@@ -498,10 +499,11 @@
             numKeysUpdated += t.subSelector.processSelectedKeys(updateCount);
         }
         return numKeysUpdated;
     }
 
+    @Override
     protected void implClose() throws IOException {
         synchronized (closeLock) {
             if (channelArray != null) {
                 if (pollWrapper != null) {
                     // prevent further wakeup

@@ -518,11 +520,10 @@
                                 ((SelChImpl)selch).kill();
                         }
                     }
                     pollWrapper.free();
                     pollWrapper = null;
-                    selectedKeys = null;
                     channelArray = null;
                     // Make all remaining helper threads exit
                     for (SelectThread t: threads)
                          t.makeZombie();
                     startLock.startThreads();
< prev index next >