import java.util.Arrays;
import java.util.concurrent.locks.LockSupport;

import org.junit.Test;

public class JI9048643 {

	@Test 
    public void testParkNanos() throws Exception { 
        final int size = 1000; 
        final long[] parkData = new long[size]; 
        final long[] sleepData = new long[size]; 
        for (int i = 0; i < size; i++) { 
            long point = System.currentTimeMillis(); 
            LockSupport.parkNanos(1L); 
            parkData[i] = System.currentTimeMillis() - point; 

            point = System.currentTimeMillis(); 
            Thread.sleep(1L); 
            sleepData[i] = System.currentTimeMillis() - point; 
        } 

        Arrays.sort(parkData); 
        Arrays.sort(sleepData); 

        System.out.println(); 
        System.out.println("parkNanos:"); 
        System.out.println("Min: " + parkData[0]); 
        System.out.println("Median: " + parkData[parkData.length / 2]); 
        System.out.println("80%: " + parkData[Math.round(((float) parkData.length) * 0.80F)]); 
        System.out.println("90%: " + parkData[Math.round(((float) parkData.length) * 0.90F)]); 
        System.out.println("99%: " + parkData[Math.round(((float) parkData.length) * 0.99F)]); 
        System.out.println("Max: " + parkData[parkData.length - 1]); 
        System.out.println(); 

        System.out.println(); 
        System.out.println("sleep:"); 
        System.out.println("Min: " + sleepData[0]); 
        System.out.println("Median: " + sleepData[sleepData.length / 2]); 
        System.out.println("80%: " + sleepData[Math.round(((float) sleepData.length) * 0.80F)]); 
        System.out.println("90%: " + sleepData[Math.round(((float) sleepData.length) * 0.90F)]); 
        System.out.println("99%: " + sleepData[Math.round(((float) sleepData.length) * 0.99F)]); 
        System.out.println("Max: " + sleepData[sleepData.length - 1]); 
        System.out.println(); 
    } 
}
