< prev index next >

test/java/lang/ThreadGroup/Stop.java

Print this page

        

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

@@ -27,11 +27,12 @@
  * @summary Stopping a ThreadGroup that contains the current thread has
  *          unpredictable results.
  */
 
 public class Stop implements Runnable {
-    private static boolean groupStopped = false ;
+    private static volatile boolean groupStopped = false ;
+    private static final int MAX_RETRY = 5;
     private static final Object lock = new Object();
 
     private static final ThreadGroup group = new ThreadGroup("");
     private static final Thread first = new Thread(group, new Stop());
     private static final Thread second = new Thread(group, new Stop());

@@ -64,12 +65,13 @@
         // Launch two threads as part of the same thread group
         first.start();
         second.start();
 
         // Wait for the thread group stop to be issued
+        int numTries = 0;
         synchronized(lock){
-            while (!groupStopped) {
+            while (!groupStopped && numTries++ < MAX_RETRY) {
                 lock.wait();
                 // Give the other thread a chance to stop
                 Thread.sleep(1000);
             }
         }
< prev index next >