Fixes for ThreadStress test

- Fix deadlock when ThreadGroup.remove(Thread) was run with
  thread_list_lock_ but needed to GC to allocate an iterator
- Fix ~MonitorList to clean ownership of any locks that might be held
  by JNI or daemon threads on shutdown.

Change-Id: I95e23c3b7c745f6a8387789949f3ec849458a27d
diff --git a/test/ThreadStress/ThreadStress.java b/test/ThreadStress/ThreadStress.java
index 94089dc..c294a38 100644
--- a/test/ThreadStress/ThreadStress.java
+++ b/test/ThreadStress/ThreadStress.java
@@ -25,7 +25,7 @@
 //   javac ThreadTest.java && java ThreadStress && rm *.class
 class ThreadStress implements Runnable {
 
-    public static final boolean DEBUG = true;
+    public static final boolean DEBUG = false;
 
     enum Operation {
         OOM(1),
@@ -214,9 +214,12 @@
                         break;
                     }
                     case ALLOC: {
-                        List<byte[]> l = new ArrayList<byte[]>();
-                        for (int i = 0; i < 1024; i++) {
-                            l.add(new byte[1024]);
+                        try {
+                            List<byte[]> l = new ArrayList<byte[]>();
+                            for (int i = 0; i < 1024; i++) {
+                                l.add(new byte[1024]);
+                            }
+                        } catch (OutOfMemoryError e) {
                         }
                         break;
                     }
@@ -225,8 +228,7 @@
                     }
                 }
             }
-        }
-        finally {
+        } finally {
             if (DEBUG) {
                 System.out.println("Finishing ThreadStress for " + id);
             }