8145808: java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java hangs on Win. 8
authorprr
Thu, 24 Dec 2015 09:07:50 -0800
changeset 35654 68448100f9b4
parent 35653 fb6bef1325f9
child 35655 92d3ad496b67
8145808: java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java hangs on Win. 8 Reviewed-by: serb, flar
jdk/test/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java
--- a/jdk/test/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java	Thu Dec 24 14:04:36 2015 +0300
+++ b/jdk/test/java/awt/Graphics2D/MTGraphicsAccessTest/MTGraphicsAccessTest.java	Thu Dec 24 09:07:50 2015 -0800
@@ -23,7 +23,7 @@
 
 /*
   @test
-  @bug 5089429 6982632
+  @bug 5089429 6982632 8145808
   @summary Checks that we don't crash if rendering operations and state
   changes are performed on a graphics context from different threads.
 
@@ -34,6 +34,7 @@
 import java.awt.*;
 import java.awt.image.*;
 import java.awt.geom.*;
+import java.util.concurrent.atomic.AtomicInteger;
 
 public class MTGraphicsAccessTest {
 
@@ -46,7 +47,7 @@
     static long testRunTime;
 
     volatile boolean done;
-    volatile int stillRunning;
+    AtomicInteger stillRunning = new AtomicInteger(0);
     volatile int numexceptions;
 
     Graphics2D sharedGraphics;
@@ -108,7 +109,7 @@
 
         mysleep(testRunTime);
         done = true;
-        while (stillRunning > 0) { mysleep(500); }
+        while (stillRunning.get() > 0) { mysleep(500); }
 
         if (numexceptions == 0) {
             System.err.println("Test passed");
@@ -187,7 +188,7 @@
         Runnable testRunnable;
 
         public TesterThread(Runnable testRunnable) {
-            stillRunning++;
+            stillRunning.incrementAndGet();
             this.testRunnable = testRunnable;
         }
 
@@ -203,7 +204,7 @@
                     }
                 }
             } finally {
-                stillRunning--;
+                stillRunning.decrementAndGet();
             }
         }
     }