< prev index next >

test/jdk/java/lang/management/ThreadMXBean/ResetPeakThreadCount.java

Print this page
rev 52112 : [mq]: 8021335


 141                 live[i] = true;
 142                 allThreads[i] = new MyThread(i);
 143                 allThreads[i].setDaemon(true);
 144                 allThreads[i].start();
 145             }
 146         }
 147         // wait until all threads have started.
 148         barrier.await();
 149 
 150         // get peak thread count after daemon threads have started
 151         long peak2 = mbean.getPeakThreadCount();
 152 
 153         System.out.println("   Current = " + mbean.getThreadCount() +
 154             " Peak before = " + peak1 + " after: " + peak2);
 155 
 156         if (peak2 != (peak1 + delta)) {
 157             throw new RuntimeException("Current Peak = " + peak2 +
 158                 " Expected to be == previous peak = " + peak1 + " + " +
 159                 delta);
 160         }
 161         // wait until the current thread count gets incremented
 162         while (mbean.getThreadCount() < (current + count)) {
 163             Thread.sleep(100);
 164         }
 165         current = mbean.getThreadCount();
 166         System.out.println("   Live thread count before returns " + current);
 167         return current;
 168     }
 169 
 170     private static long terminateThreads(int from, int count) throws InterruptedException {
 171         // get current peak thread count
 172         long peak1 = mbean.getPeakThreadCount();
 173 
 174         // Stop daemon threads and wait to be sure they all are dead
 175         System.out.println("Terminating " + count + " threads....");
 176         barrier.set(count);
 177         synchronized(live) {
 178             for (int i = from; i < (from+count); i++) {
 179                 live[i] = false;
 180             }
 181             live.notifyAll();
 182         }
 183         // wait until daemon threads terminated.
 184         barrier.await();
 185 
 186         // get peak thread count after daemon threads have terminated
 187         long peak2 = mbean.getPeakThreadCount();
 188         // assuming no system thread is added
 189         if (peak2 != peak1) {
 190             throw new RuntimeException("Current Peak = " + peak2 +
 191                 " Expected to be = previous peak = " + peak1);
 192         }
 193 
 194         for (int i = from; i < (from+count); i++) {
 195             allThreads[i].join();
 196         }
 197 
 198         // there is a race in the counter update logic somewhere causing
 199         // the thread counters go ff
 200         // we need to give the terminated threads some extra time to really die
 201         // JDK-8021335
 202         Thread.sleep(500);
 203 
 204         long current = mbean.getThreadCount();
 205         System.out.println("   Live thread count before returns " + current);
 206         return current;
 207     }
 208 
 209     private static void resetPeak(long expectedCount) {
 210         long peak3 = mbean.getPeakThreadCount();
 211         long current = mbean.getThreadCount();
 212 
 213         // Nightly testing showed some intermittent failure.
 214         // Check here to get diagnostic information if some strange
 215         // behavior occurs.
 216         checkThreadCount(expectedCount, current, 0);
 217 
 218         // Reset peak thread count
 219         mbean.resetPeakThreadCount();
 220 
 221         long afterResetPeak = mbean.getPeakThreadCount();
 222         long afterResetCurrent = mbean.getThreadCount();




 141                 live[i] = true;
 142                 allThreads[i] = new MyThread(i);
 143                 allThreads[i].setDaemon(true);
 144                 allThreads[i].start();
 145             }
 146         }
 147         // wait until all threads have started.
 148         barrier.await();
 149 
 150         // get peak thread count after daemon threads have started
 151         long peak2 = mbean.getPeakThreadCount();
 152 
 153         System.out.println("   Current = " + mbean.getThreadCount() +
 154             " Peak before = " + peak1 + " after: " + peak2);
 155 
 156         if (peak2 != (peak1 + delta)) {
 157             throw new RuntimeException("Current Peak = " + peak2 +
 158                 " Expected to be == previous peak = " + peak1 + " + " +
 159                 delta);
 160         }




 161         current = mbean.getThreadCount();
 162         System.out.println("   Live thread count before returns " + current);
 163         return current;
 164     }
 165 
 166     private static long terminateThreads(int from, int count) throws InterruptedException {
 167         // get current peak thread count
 168         long peak1 = mbean.getPeakThreadCount();
 169 
 170         // Stop daemon threads and wait to be sure they all are dead
 171         System.out.println("Terminating " + count + " threads....");
 172         barrier.set(count);
 173         synchronized(live) {
 174             for (int i = from; i < (from+count); i++) {
 175                 live[i] = false;
 176             }
 177             live.notifyAll();
 178         }
 179         // wait until daemon threads terminated.
 180         barrier.await();
 181 
 182         // get peak thread count after daemon threads have terminated
 183         long peak2 = mbean.getPeakThreadCount();
 184         // assuming no system thread is added
 185         if (peak2 != peak1) {
 186             throw new RuntimeException("Current Peak = " + peak2 +
 187                 " Expected to be = previous peak = " + peak1);
 188         }
 189 
 190         for (int i = from; i < (from+count); i++) {
 191             allThreads[i].join();
 192         }






 193 
 194         long current = mbean.getThreadCount();
 195         System.out.println("   Live thread count before returns " + current);
 196         return current;
 197     }
 198 
 199     private static void resetPeak(long expectedCount) {
 200         long peak3 = mbean.getPeakThreadCount();
 201         long current = mbean.getThreadCount();
 202 
 203         // Nightly testing showed some intermittent failure.
 204         // Check here to get diagnostic information if some strange
 205         // behavior occurs.
 206         checkThreadCount(expectedCount, current, 0);
 207 
 208         // Reset peak thread count
 209         mbean.resetPeakThreadCount();
 210 
 211         long afterResetPeak = mbean.getPeakThreadCount();
 212         long afterResetCurrent = mbean.getThreadCount();


< prev index next >