@Test(timeout = 2000)
public void testDefaultThreadFactoryNonStickyThreadGroupConstructor() throws InterruptedException {

    final AtomicReference<DefaultThreadFactory> factory = new AtomicReference<DefaultThreadFactory>();
    final AtomicReference<ThreadGroup> firstCaptured = new AtomicReference<ThreadGroup>();
    final ThreadGroup firstGroup = new ThreadGroup("first");
    final Thread first = new Thread(firstGroup, new Runnable() {
        @Override
        public void run() {
            factory.set(new DefaultThreadFactory("sticky", false, Thread.NORM_PRIORITY, null));
            final Thread t = factory.get().newThread(new Runnable() {
                @Override
                public void run() {
                }
            });
            firstCaptured.set(t.getThreadGroup());
        }
    });
    first.start();
    first.join();
    assertEquals(firstGroup, firstCaptured.get());
    final AtomicReference<ThreadGroup> secondCaptured = new AtomicReference<ThreadGroup>();
    final ThreadGroup secondGroup = new ThreadGroup("second");
    final Thread second = new Thread(secondGroup, new Runnable() {
        @Override
        public void run() {
            final Thread t = factory.get().newThread(new Runnable() {
                @Override
                public void run() {
                }
            });
            secondCaptured.set(t.getThreadGroup());
        }
    });
    second.start();
    second.join();
    assertEquals(secondGroup, secondCaptured.get());
}