Make 030-bad-finalizer less flaky by removing timing dependent output

Bug: 13108062

(cherry picked from commit 9d94d5f58bdbdcfa5dab7149f96c0d232fb7e306)

Change-Id: Ie240991c5a97af62ab9f24318d5af94cf402d881
diff --git a/test/030-bad-finalizer/src/Main.java b/test/030-bad-finalizer/src/Main.java
index 330e344..942ee25 100644
--- a/test/030-bad-finalizer/src/Main.java
+++ b/test/030-bad-finalizer/src/Main.java
@@ -21,19 +21,47 @@
     public static void main(String[] args) {
         BadFinalizer bf = new BadFinalizer();
 
-        System.out.println("Constructed object.");
+        System.out.println("About to null reference and request GC.");
         bf = null;
-
-        System.out.println("Nulled. Requestion gc.");
         Runtime.getRuntime().gc();
 
         for (int i = 0; i < 8; i++) {
-            BadFinalizer.snooze(4000);
-            System.out.println("Requesting another GC.");
+            snooze(4000);
             Runtime.getRuntime().gc();
         }
 
-        System.out.println("Done waiting.");
+        System.out.println("UNREACHABLE");
         System.exit(0);
     }
+
+    public static void snooze(int ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (InterruptedException ie) {
+        }
+    }
+
+    /**
+     * Class with a bad finalizer.
+     */
+    public static class BadFinalizer {
+        protected void finalize() {
+            System.out.println("Finalizer started and spinning...");
+            int j = 0;
+
+            /* spin for a bit */
+            long start, end;
+            start = System.nanoTime();
+            for (int i = 0; i < 1000000; i++) {
+                j++;
+            }
+            end = System.nanoTime();
+            System.out.println("Finalizer done spinning.");
+
+            System.out.println("Finalizer sleeping forever now.");
+            while (true) {
+                snooze(10000);
+            }
+        }
+    }
 }