< prev index next >

src/java.base/share/classes/sun/nio/ch/SelectorImpl.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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

@@ -47,18 +47,18 @@
 public abstract class SelectorImpl
     extends AbstractSelector
 {
 
     // The set of keys with data ready for an operation
-    protected Set<SelectionKey> selectedKeys;
+    protected final Set<SelectionKey> selectedKeys;
 
     // The set of keys registered with this Selector
-    protected HashSet<SelectionKey> keys;
+    protected final HashSet<SelectionKey> keys;
 
     // Public views of the key sets
-    private Set<SelectionKey> publicKeys;             // Immutable
-    private Set<SelectionKey> publicSelectedKeys;     // Removal allowed, but not addition
+    private final Set<SelectionKey> publicKeys;         // Immutable
+    private final Set<SelectionKey> publicSelectedKeys; // Removal allowed, but not addition
 
     protected SelectorImpl(SelectorProvider sp) {
         super(sp);
         keys = new HashSet<>();
         selectedKeys = new HashSet<>();

@@ -139,11 +139,13 @@
     }
 
     protected abstract void implRegister(SelectionKeyImpl ski);
 
     void processDeregisterQueue() throws IOException {
-        // Precondition: Synchronized on this, keys, and selectedKeys
+        assert Thread.holdsLock(this);
+        assert Thread.holdsLock(keys);
+        assert Thread.holdsLock(selectedKeys);
         Set<SelectionKey> cks = cancelledKeys();
         synchronized (cks) {
             if (!cks.isEmpty()) {
                 Iterator<SelectionKey> i = cks.iterator();
                 while (i.hasNext()) {
< prev index next >