--- old/test/java/lang/ThreadGroup/Stop.java 2016-07-08 13:53:54.000000000 +0800 +++ new/test/java/lang/ThreadGroup/Stop.java 2016-07-08 13:53:54.000000000 +0800 @@ -1,5 +1,5 @@ /* - * 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 @@ -29,7 +29,8 @@ */ 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(""); @@ -66,8 +67,9 @@ 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);