< prev index next >

test/java/lang/ThreadGroup/Stop.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2011, 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. --- 1,7 ---- /* ! * 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,37 **** * @summary Stopping a ThreadGroup that contains the current thread has * unpredictable results. */ public class Stop implements Runnable { ! private static boolean groupStopped = false ; 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()); --- 27,38 ---- * @summary Stopping a ThreadGroup that contains the current thread has * unpredictable results. */ public class Stop implements Runnable { ! 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,75 **** // Launch two threads as part of the same thread group first.start(); second.start(); // Wait for the thread group stop to be issued synchronized(lock){ ! while (!groupStopped) { lock.wait(); // Give the other thread a chance to stop Thread.sleep(1000); } } --- 65,77 ---- // 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 && numTries++ < MAX_RETRY) { lock.wait(); // Give the other thread a chance to stop Thread.sleep(1000); } }
< prev index next >