日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java代碼執(zhí)行在沒有斷點和正常運行的調(diào)試中產(chǎn)生不同的結(jié)果。ExecutorService是否損壞?

瀏覽:197日期:2024-04-29 18:13:52
如何解決Java代碼執(zhí)行在沒有斷點和正常運行的調(diào)試中產(chǎn)生不同的結(jié)果。ExecutorService是否損壞??

HotSpot JIT優(yōu)化消除了計數(shù)循環(huán)中的安全點檢查,這是一個惡作劇。

這是一個非常有趣的問題:一個簡單的Java測試揭示了JVM內(nèi)部的一個重要問題。

沒有立即出現(xiàn)線程轉(zhuǎn)儲的事實表明該問題不在Java代碼中,而是與JVM相關。線程轉(zhuǎn)儲在安全點打印。延遲意味著VM無法在短時間內(nèi)到達安全點。

背景

當沒有Java線程在運行時,某些VM操作(GC,Deoptimization,Threaddump和某些其他操作)在世界停頓時執(zhí)行。但是Java線程無法在任意點停止,它們只能在稱為 安全點的某些位置暫停。在JIT編譯的代碼中,安全點通常放置在方法出口和后向分支(即循環(huán)內(nèi)部)中。

就性能而言,安全點檢查相對便宜,但并非免費。這就是為什么JIT編譯器試圖在可能的情況下減少安全點的數(shù)量。一種這樣的優(yōu)化是消除計數(shù)循環(huán)中的安全點檢查,即已知具有有限次數(shù)的迭代的具有整數(shù)計數(shù)器的循環(huán)。

驗證理論

讓我們回到測試中,檢查是否及時到達安全點。

添加-XX:+SafepointTimeout-XX:SafepointTimeoutDelay=1000JVM選項。每當VM在1000毫秒內(nèi)未達到安全點時,這應該會打印一條調(diào)試消息。

# SafepointSynchronize::begin: Timeout detected:# SafepointSynchronize::begin: Timed out while spinning to reach a safepoint.# SafepointSynchronize::begin: Threads which did not reach the safepoint:# 'pool-1-thread-2' #12 prio=5 os_prio=0 tid=0x0000000019004800 nid=0x1480 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE# SafepointSynchronize::begin: (End of list)

是的,它打印出線程pool-1-thread-2無法在1000毫秒內(nèi)停止。這是執(zhí)行程序池的第二個線程,應運行insertionSort算法。

insertionSort有兩個非常長的嵌套計數(shù)循環(huán),看起來JVM消除了其中的安全點檢查。因此,如果此方法以編譯模式運行,則JVM在該方法完成之前無法停止它。如果在方法運行時請求世界暫停,則所有其他線程也將等待。

該怎么辦?

這個問題早已為人所知。這是相關的JVM錯誤:JDK-5014723。這不是一個高度優(yōu)先的問題,因為該問題很少出現(xiàn)在現(xiàn)實應用中。

JDK 8u92中出現(xiàn)了一個新的JVM標志,以解決此問題。-XX:+UseCountedLoopSafepoints總是將安全點檢查放在循環(huán)內(nèi)。

另一種解決方案是通過修改循環(huán)中的計數(shù)器變量將長計數(shù)循環(huán)轉(zhuǎn)換為通用循環(huán)。

例如,如果您替換為問題if (breaker) break;,if (breaker) j = 0;該問題也將消失。

那為什么它在調(diào)試模式下工作呢?

在啟動調(diào)試器的情況下啟動JVM時,將禁用某些JIT優(yōu)化,以使調(diào)試信息可用。在這種情況下,編譯后的代碼具有所有安全點檢查。

解決方法

TL:DR ExecutorService executorService = Executors.newFixedThreadPool(8);在調(diào)試中并發(fā)運行,但在正常運行時它會并發(fā)運行,但稍后在單線程中運行。

我有一些代碼可以在中啟動4個不同的任務ExecutorService。這些任務中的兩項應幾乎立即完成,其他兩項應運行一段時間。

這些任務以秒為單位返回執(zhí)行時間Future<Double>。

此代碼負責任務執(zhí)行和度量:

public Future<Double> measure(int[] arr,ProcessIntArray processIntArray,ExecutorService es) { Callable<Double> task = () -> {long start = System.nanoTime();processIntArray.process(arr);long end = System.nanoTime();return (end - start) / 1000000000.0; }; return es.submit(task);}

稍后,在啟動這些任務之后,我以相同輸入大小的執(zhí)行順序從前一次運行打印它們。

Future<Double> bubbleSortTime = measure(bubbleSortArray,Solution::bubbleSort,executorService); Future<Double> insertionSortTime = measure(insertionSortArray,Solution::insertionSort,executorService); Future<Double> quickSortTime = measure(quickSortArray,Solution::quickSort,executorService); Future<Double> mergeSortTime = measure(mergeSortArray,Solution::mergeSort,executorService); System.out.println(); System.out.println('array size: ' + size); System.out.println('quick sort: ' + quickSortTime.get() + 's'); System.out.println('merge sort: ' + mergeSortTime.get() + 's'); System.out.println('insertion sort: ' + insertionSortTime.get() + 's'); System.out.println('bubble sort: ' + bubbleSortTime.get() + 's');

當我在調(diào)試模式下運行代碼時,將立即打印2個結(jié)果,并且我需要等待一會兒以獲得第3個結(jié)果(我不必費心等待第4個結(jié)果)。

在調(diào)試中啟動后(正確和預期的):

array size: 1000000 quick sort: 0.186892839s merge sort: 0.291950604sinsertion sort: 344.534256723s

正常執(zhí)行會有所不同,看起來好像在long start = System.nanoTime();執(zhí)行方法measure,然后線程進入睡眠狀態(tài),并且在完成insertSort之后,quickSort返回到執(zhí)行中,從而產(chǎn)生輸出:

array size: 1000000 quick sort: 345.893922141s merge sort: 345.944023095sinsertion sort: 345.871908569s

錯了 所有這些線程應與newFixedThreadPool javadoc中的所有線程同時運行。

/** * Creates a thread pool that reuses a fixed number of threads * operating off a shared unbounded queue. At any point,at most * {@code nThreads} threads will be active processing tasks. * If additional tasks are submitted when all threads are active,* they will wait in the queue until a thread is available. * If any thread terminates due to a failure during execution * prior to shutdown,a new one will take its place if needed to * execute subsequent tasks. The threads in the pool will exist * until it is explicitly {@link ExecutorService#shutdown shutdown}. * * @param nThreads the number of threads in the pool * @return the newly created thread pool * @throws IllegalArgumentException if {@code nThreads <= 0} */public static ExecutorService newFixedThreadPool(int nThreads)

我附上源代碼:

import java.util.Arrays;import java.util.Random;import java.util.concurrent.*;class ThreadedSortingComparsion { Random random = new Random(System.currentTimeMillis()); void popul(int[] array) {for (int i = 0; i < array.length; i++) { array[i] = random.nextInt();} } interface ArraySorter {void sort(int[] array); } public Future<Double> measureTime(int[] array,ArraySorter arraySorter,ExecutorService executorService) {Callable<Double> task = () -> { long start = System.nanoTime(); arraySorter.sort(array); long end = System.nanoTime(); return (end - start) / 1000000000.0;};return executorService.submit(task); } public void start() throws ExecutionException,InterruptedException {ExecutorService executorService = Executors.newFixedThreadPool(8);int size = 1000 * 1000;int[] quickSortArray = new int[size];popul(quickSortArray);int[] bubbleSortArray = Arrays.copyOf(quickSortArray,quickSortArray.length);int[] mergeSortArray = Arrays.copyOf(quickSortArray,quickSortArray.length);int[] originalArray = Arrays.copyOf(quickSortArray,quickSortArray.length);int[] insertionSortArray = Arrays.copyOf(quickSortArray,quickSortArray.length);Future<Double> bubbleSortTime = measureTime(bubbleSortArray,ThreadedSortingComparsion::bubbleSort,executorService);Future<Double> insertionSortTime = measureTime(insertionSortArray,ThreadedSortingComparsion::insertionSort,executorService);Future<Double> quickSortTime = measureTime(quickSortArray,ThreadedSortingComparsion::quickSort,executorService);Future<Double> mergeSortTime = measureTime(mergeSortArray,ThreadedSortingComparsion::mergeSort,executorService);System.out.println();System.out.println('array size: ' + size);System.out.println('quick sort: ' + quickSortTime.get() + 's');System.out.println('merge sort: ' + mergeSortTime.get() + 's');System.out.println('insertion sort: ' + insertionSortTime.get() + 's');System.out.println('bubble sort: ' + bubbleSortTime.get() + 's');executorService.shutdown();for (int i = 0; i < quickSortArray.length; i++) { if (quickSortArray[i] != bubbleSortArray[i] || quickSortArray[i] != mergeSortArray[i] || quickSortArray[i] != insertionSortArray[i]) {throw new RuntimeException(Arrays.toString(originalArray)); }} } public static void mergeSort(int[] ar) {if (ar.length < 5) { bubbleSort(ar); return;}int middle = ar.length / 2;int[] arrayLeft = new int[middle];int[] arrayRight = new int[ar.length - middle];for (int i = 0; i < ar.length; i++) { if (i < middle) {arrayLeft[i] = ar[i]; } else {arrayRight[i - middle] = ar[i]; }}mergeSort(arrayLeft);mergeSort(arrayRight);int indexLeft = 0;int indexRight = 0;int inputArrayIndex = 0;while (true) { int whatToPutInAR = 0; if (indexLeft != arrayLeft.length && indexRight != arrayRight.length) {if (arrayLeft[indexLeft] < arrayRight[indexRight]) { whatToPutInAR = arrayLeft[indexLeft]; indexLeft++;} else { whatToPutInAR = arrayRight[indexRight]; indexRight++;} } else if (indexLeft != arrayLeft.length) {whatToPutInAR = arrayLeft[indexLeft];indexLeft++; } else if (indexRight != arrayRight.length) {whatToPutInAR = arrayRight[indexRight];indexRight++; } if (inputArrayIndex == ar.length) return; ar[inputArrayIndex++] = whatToPutInAR;} } private static void quickSort(int[] ar) {quickSort(ar,ar.length); } static public void quickSort(int[] array,int start,int end) {boolean changed = false;if (end == 0) return;int pivot = array[end - 1];int partitionCandidate = start;for (int i = start; i < end; i++) { if (array[i] < pivot) {swap(array,partitionCandidate++,i);changed = true; } else if (pivot < array[i]) {swap(array,end - 1,i);changed = true; }}if (start < partitionCandidate) { quickSort(array,start,partitionCandidate);}if (partitionCandidate < end) { if (partitionCandidate != start || changed) quickSort(array,partitionCandidate,end);} } public static void swap(int[] ar,int from,int to) {int old = ar[from];ar[from] = ar[to];ar[to] = old; } public static void bubbleSort(int[] array) {for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length - 1; j++) {if (array[j] > array[j + 1]) { swap(array,j + 1,j);} }} } private static void insertionSort(int[] ar) {for (int i = 0; i < ar.length; i++) { for (int j = i; j >= 1; j--) {boolean breaker = true;if (ar[j] < ar[j - 1]) { breaker = false; swap(ar,j - 1,j);}if (breaker) break; }} } public static void main(String[] args) throws ExecutionException,InterruptedException {ThreadedSortingComparsion s = new ThreadedSortingComparsion();s.start(); }}

編輯:當我在Ideone中運行它時,代碼工作正常。 http://ideone.com/1E8C51Ideone具有Java版本1.8.0_51在測試我1.8.0_91,1.8.0_92。和1.8.0_45。為什么它可以在ideone上運行,但不能在我測試的其他兩臺PC上運行呢?

當我執(zhí)行線程轉(zhuǎn)儲時,雖然不在調(diào)試中執(zhí)行,但我會等待一會兒,并且在打印完線程轉(zhuǎn)儲后,還會打印結(jié)果。因此線程轉(zhuǎn)儲是在完成插入排序之后完成的。

'C:Program FilesJavajdk1.8.0_45binjava' -Xmx8G -Xss1G -Didea.launcher.port=7533 '-Didea.launcher.bin.path=C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 2016.1.3bin' -Dfile.encoding=UTF-8 -classpath 'C:Program FilesJavajdk1.8.0_45jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_45jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_45jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_45jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_45jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_45jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_45jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_45jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_45jrelibextnashorn.jar;C:Program FilesJavajdk1.8.0_45jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_45jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_45jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_45jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_45jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_45jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_45jrelibjce.jar;C:Program FilesJavajdk1.8.0_45jrelibjfr.jar;C:Program FilesJavajdk1.8.0_45jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_45jrelibjsse.jar;C:Program FilesJavajdk1.8.0_45jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_45jrelibplugin.jar;C:Program FilesJavajdk1.8.0_45jrelibresources.jar;C:Program FilesJavajdk1.8.0_45jrelibrt.jar;C:UsersTomasz_MielczarskiIdeaProjectsuntitledoutproductionuntitled;C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 2016.1.3libidea_rt.jar' com.intellij.rt.execution.application.AppMain ThreadedSortingComparsionarray size: 10000002016-07-15 13:45:22Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode):'pool-1-thread-4' #15 prio=5 os_prio=0 tid=0x00000000696bd000 nid=0x560 runnable [0x00000002fffee000] java.lang.Thread.State: RUNNABLE at ThreadedSortingComparsion.mergeSort(ThreadedSortingComparsion.java:77) at ThreadedSortingComparsion.mergeSort(ThreadedSortingComparsion.java:78) at ThreadedSortingComparsion.mergeSort(ThreadedSortingComparsion.java:78) at ThreadedSortingComparsion.mergeSort(ThreadedSortingComparsion.java:78) at ThreadedSortingComparsion.mergeSort(ThreadedSortingComparsion.java:77) at ThreadedSortingComparsion$$Lambda$5/81628611.sort(Unknown Source) at ThreadedSortingComparsion.lambda$measureTime$0(ThreadedSortingComparsion.java:21) at ThreadedSortingComparsion$$Lambda$2/1023892928.call(Unknown Source) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)'pool-1-thread-3' #14 prio=5 os_prio=0 tid=0x00000000696bb800 nid=0x2634 runnable [0x00000002bffee000] java.lang.Thread.State: RUNNABLE at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:123) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:126) at ThreadedSortingComparsion.quickSort(ThreadedSortingComparsion.java:105) at ThreadedSortingComparsion$$Lambda$4/1989780873.sort(Unknown Source) at ThreadedSortingComparsion.lambda$measureTime$0(ThreadedSortingComparsion.java:21) at ThreadedSortingComparsion$$Lambda$2/1023892928.call(Unknown Source) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)'pool-1-thread-2' #13 prio=5 os_prio=0 tid=0x00000000696b7800 nid=0x1c70 waiting on condition [0x000000027ffef000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000719d72480> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)'pool-1-thread-1' #12 prio=5 os_prio=0 tid=0x00000000696b6800 nid=0x478 runnable [0x000000023ffee000] java.lang.Thread.State: RUNNABLE at ThreadedSortingComparsion.bubbleSort(ThreadedSortingComparsion.java:139) at ThreadedSortingComparsion$$Lambda$1/990368553.sort(Unknown Source) at ThreadedSortingComparsion.lambda$measureTime$0(ThreadedSortingComparsion.java:21) at ThreadedSortingComparsion$$Lambda$2/1023892928.call(Unknown Source) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)'Monitor Ctrl-Break' #11 daemon prio=5 os_prio=0 tid=0x0000000068d3d000 nid=0x2f3c runnable [0x00000001fffee000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:170) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) - locked <0x00000007156892b8> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:161) at java.io.BufferedReader.readLine(BufferedReader.java:324) - locked <0x00000007156892b8> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(BufferedReader.java:389) at com.intellij.rt.execution.application.AppMain$1.run(AppMain.java:93) at java.lang.Thread.run(Thread.java:745)'Service Thread' #10 daemon prio=9 os_prio=0 tid=0x0000000068c81000 nid=0x2d6c runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE'C1 CompilerThread3' #9 daemon prio=9 os_prio=2 tid=0x0000000068bea800 nid=0x1ad0 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE'C2 CompilerThread2' #8 daemon prio=9 os_prio=2 tid=0x0000000068be4000 nid=0x17d0 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE'C2 CompilerThread1' #7 daemon prio=9 os_prio=2 tid=0x0000000068bdd800 nid=0x3238 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE'C2 CompilerThread0' #6 daemon prio=9 os_prio=2 tid=0x0000000068bda000 nid=0x1824 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE'Attach Listener' #5 daemon prio=5 os_prio=2 tid=0x0000000068bd8800 nid=0x910 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE'Signal Dispatcher' #4 daemon prio=9 os_prio=2 tid=0x0000000068bd7800 nid=0x31f8 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE'Finalizer' #3 daemon prio=8 os_prio=1 tid=0x0000000043229800 nid=0x2810 in Object.wait() [0x00000000fffee000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0000000719d707e0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) - locked <0x0000000719d707e0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)'Reference Handler' #2 daemon prio=10 os_prio=2 tid=0x0000000043223000 nid=0xd48 in Object.wait() [0x00000000bffef000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0000000719d78370> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:502) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157) - locked <0x0000000719d78370> (a java.lang.ref.Reference$Lock)'main' #1 prio=5 os_prio=0 tid=0x000000000311d800 nid=0x2ed0 waiting on condition [0x000000004311e000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000719d58fe0> (a java.util.concurrent.FutureTask) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429) at java.util.concurrent.FutureTask.get(FutureTask.java:191) at ThreadedSortingComparsion.start(ThreadedSortingComparsion.java:48) at ThreadedSortingComparsion.main(ThreadedSortingComparsion.java:162) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)'VM Thread' os_prio=2 tid=0x0000000056348800 nid=0x2984 runnable'GC task thread#0 (ParallelGC)' os_prio=0 tid=0x0000000043147000 nid=0x27e0 runnable'GC task thread#1 (ParallelGC)' os_prio=0 tid=0x0000000043148800 nid=0x20b4 runnable'GC task thread#2 (ParallelGC)' os_prio=0 tid=0x000000004314a000 nid=0x1da4 runnable'GC task thread#3 (ParallelGC)' os_prio=0 tid=0x000000004314c000 nid=0x29e0 runnable'GC task thread#4 (ParallelGC)' os_prio=0 tid=0x000000004314e000 nid=0xa04 runnable'GC task thread#5 (ParallelGC)' os_prio=0 tid=0x0000000043150000 nid=0x14b8 runnable'GC task thread#6 (ParallelGC)' os_prio=0 tid=0x0000000043153800 nid=0xf00 runnable'GC task thread#7 (ParallelGC)' os_prio=0 tid=0x0000000043154800 nid=0x243c runnable'VM Periodic Task Thread' os_prio=2 tid=0x0000000068c82000 nid=0x22d8 waiting on conditionJNI global references: 224Heap PSYoungGen total 76288K,used 13755K [0x0000000715580000,0x000000071aa80000,0x00000007c0000000) eden space 65536K,4% used [0x0000000715580000,0x0000000715874910,0x0000000719580000) from space 10752K,99% used [0x0000000719580000,0x0000000719ffa348,0x000000071a000000) to space 10752K,0% used [0x000000071a000000,0x000000071a000000,0x000000071aa80000) ParOldGen total 175104K,used 33211K [0x00000005c0000000,0x00000005cab00000,0x0000000715580000) object space 175104K,18% used [0x00000005c0000000,0x00000005c206ed30,0x00000005cab00000) Metaspace used 4277K,capacity 4790K,committed 4992K,reserved 1056768K class space used 484K,capacity 535K,committed 640K,reserved 1048576Kquick sort: 355.579434803smerge sort: 355.629940032sinsertion sort: 355.532578023s

標簽: java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99国产精品| 欧美在线影院| 日韩三级一区| 欧美伊人久久| 国精品产品一区| 日韩欧美综合| 女人av一区| 视频一区日韩精品| 久久精品一区二区三区中文字幕| 国产亚洲精品美女久久 | 激情久久婷婷| 日韩在线卡一卡二| 久久99偷拍| 精品免费av在线| 久久午夜精品| 久久久久亚洲精品中文字幕| 国产综合亚洲精品一区二| 男女男精品视频网| 国产精品欧美日韩一区| 国产精品xvideos88| 日韩av一级| 日本精品在线播放| 另类中文字幕国产精品| 综合在线一区| 福利一区二区免费视频| 日韩精品一级二级| 精品亚洲成人| 亚洲欧美不卡| 久久精品免视看国产成人| 亚洲欧美日韩高清在线| 国产精品亚洲二区| 黄页网站一区| 精品网站999| 国产精品免费看| 国产欧美另类| 免费视频国产一区| 国产精品巨作av| 在线观看免费一区二区| 国产精品多人| 丝袜美腿亚洲一区| 国产精品成人a在线观看| 亚洲永久精品唐人导航网址| 红杏一区二区三区| 免费在线观看日韩欧美| 伊人久久视频| 日本91福利区| 狠狠久久婷婷| 国产精品毛片久久| 亚洲18在线| 色婷婷狠狠五月综合天色拍| 日本欧美一区二区在线观看| 欧美日韩视频| 成人在线免费观看91| 色8久久久久| 亚洲激情精品| 久久精选视频| 成人在线黄色| 国产精品主播| 一区二区三区午夜视频| 亚洲天堂资源| 久久久精品区| 欧美在线看片| 午夜在线播放视频欧美| 秋霞国产精品| 成人精品国产亚洲| 欧美一级二级三级视频| 亚洲一区二区三区四区电影| 蜜桃国内精品久久久久软件9| 国产一区二区三区不卡av| 国产欧美日韩一区二区三区四区| 亚洲专区在线| 国产免费成人| 99热精品在线| 99国产精品私拍| 激情综合自拍| 99tv成人| 久久久久免费av| 亚洲电影有码| 免费污视频在线一区| 在线看片国产福利你懂的| 国产精品丝袜在线播放| 久久精品72免费观看| 亚欧成人精品| 婷婷精品久久久久久久久久不卡| 亚洲欧美久久| 蜜臀久久久久久久| 亚洲2区在线| 日韩高清电影免费| 日韩黄色免费网站| 91亚洲无吗| 国产精品最新| 精品视频黄色| 中文字幕高清在线播放| 亚洲精品一级二级| 蜜臀久久99精品久久一区二区 | 亚洲ww精品| 婷婷视频一区二区三区| 91麻豆精品激情在线观看最新| 日韩高清一区| 日韩不卡一区二区| 国产欧美激情| 精品国产网站| 久久婷婷av| 999视频精品| 亚洲制服少妇| 日韩中文一区二区| 国产精品久久久久久久久久齐齐 | 久久99久久人婷婷精品综合| 久久国产精品美女| 久久精品国产99国产精品| 国产精品不卡| 精品日韩毛片| 亚洲人成亚洲精品| 国产精品tv| 午夜精品久久久久久久久久蜜桃| 99久久视频| 黄色av一区| 欧美有码在线| 日韩精品电影| 免费视频久久| 欧美日韩亚洲一区在线观看| 成人在线视频免费看| 欧洲激情综合| 欧美精品观看| 久久免费国产| 一区二区国产精品| 久久不见久久见国语| 久久久久国产一区二区| 日韩在线卡一卡二| 日韩欧美另类一区二区| 欧美日本久久| 亚洲一区二区三区在线免费| 偷拍欧美精品| 91av亚洲| 国精品一区二区| 亚洲精品自拍| 日本激情一区| 亚洲男女自偷自拍| 免费一级欧美在线观看视频 | 国产日韩在线观看视频| 国产伦久视频在线观看| 麻豆9191精品国产| 国产成人精品一区二区免费看京| 一区福利视频| 免费在线成人| 久久精品青草| 欧美日韩午夜电影网| 久久久精品网| 国产剧情在线观看一区| 日韩视频一区| 国产在线观看91一区二区三区| 午夜在线精品| 在线看片福利| 欧美亚洲综合视频| 一区福利视频| 红杏一区二区三区| 日韩**一区毛片| 欧美福利一区| 精品成av人一区二区三区| 亚洲精品福利| 丝袜av一区| 黄色网一区二区| 日韩av二区在线播放| 五月天久久777| 成人在线视频中文字幕| 日韩精品免费视频人成 | 欧美亚洲国产一区| 久久久久久久久成人| 在线一区二区三区视频| 欧美+亚洲+精品+三区| 国内精品亚洲| 国产精品手机在线播放| 综合色就爱涩涩涩综合婷婷| 国产精品伦理久久久久久| 日韩av三区| 蜜桃久久av一区| 国产 日韩 欧美一区| 国产探花一区在线观看| 亚洲综合福利| 免费观看在线综合色| 欧美亚洲精品在线| av免费不卡国产观看| 国产精品欧美大片| 日韩成人一级| 一区二区三区午夜视频| 亚洲精品极品少妇16p| 日韩天堂在线| 欧美一级鲁丝片| 欧美黑人做爰爽爽爽| 亚洲精品在线a| 在线免费观看亚洲| 香蕉成人久久| 老鸭窝毛片一区二区三区| 91精品国产乱码久久久久久久| а√天堂8资源中文在线| 国产在线观看91一区二区三区| 国产精品va| 久久精品国产久精国产爱| 精品色999| 国产一区二区三区天码|