< prev index next >

test/java/util/logging/LogManagerAppContextDeadlock.java

Print this page

        

@@ -139,21 +139,25 @@
             }
         };
         t1.setDaemon(true);
         t1.start();
         Thread t2 = new Thread() {
+            public Object logger;
             public void run() {
                 sem3.release();
                 try {
                     // Wait until Thread1 is in FakeAppContext constructor
                     sem2.acquire();
                     System.out.println("Sem2 acquired: Thread #1 will be waiting to acquire Sem");
                 } catch (InterruptedException ie) {
                     Thread.interrupted();
                 }
                 System.out.println("Logger.getLogger(name).info(name)");
-                Logger.getLogger(test.name());//.info(name);
+                // stick the logger in an instance variable to prevent it
+                // from being garbage collected before the main thread
+                // calls LogManager.getLogger() below.
+                logger = Logger.getLogger(test.name());//.info(name);
                 System.out.println("Done: Logger.getLogger(name).info(name)");
             }
         };
         t2.setDaemon(true);
         t2.start();
< prev index next >