< prev index next >
test/jdk/java/nio/channels/Selector/RegisterDuringSelect.java
Print this page
@@ -23,10 +23,13 @@
/* @test
* @bug 8201315
* @summary Test that channels can be registered, interest ops can changed,
* and keys cancelled while a selection operation is in progress.
+ * @library /test/lib
+ * @build jdk.test.lib.Utils
+ * @run main RegisterDuringSelect
*/
import java.io.IOException;
import java.nio.channels.ClosedSelectorException;
import java.nio.channels.Pipe;
@@ -36,10 +39,12 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.Phaser;
+import jdk.test.lib.Utils;
+
public class RegisterDuringSelect {
static Callable<Void> selectLoop(Selector sel, Phaser barrier) {
return new Callable<Void>() {
@Override
@@ -82,15 +87,17 @@
System.out.println("register ...");
SelectionKey key = sc.register(sel, SelectionKey.OP_READ);
if (!sel.keys().contains(key))
throw new RuntimeException("key not in key set");
+ Thread.sleep(Utils.adjustTimeout(50));
sel.wakeup();
barrier.arriveAndAwaitAdvance();
System.out.println("interestOps ...");
key.interestOps(0);
+ Thread.sleep(Utils.adjustTimeout(50));
sel.wakeup();
barrier.arriveAndAwaitAdvance();
System.out.println("cancel ...");
key.cancel();
< prev index next >