2017-10-13 105 views
0

我正在學習關於java中的線程,我試圖使用兩個線程在一個數組上運行QuickSort,但沒有按預期工作。這個想法是在數組的分區後在第一部分上運行一個線程,而第二個線程將在另一部分上運行。我假設使用兩個並行運行的線程可以提高性能,但事實並非如此。經過多次測試後,使用這兩個線程比普通的原始快速排序要差一些。快速排序與更多的線程執行更差

我不知道什麼似乎是問題。

+0

請參閱[多線程是否可以提高性能?怎麼樣?](https://stackoverflow.com/questions/15292626/does-multi-threading-improve-performance-how)。你有多少個核心?問題是否正確?在這種情況下,它似乎只工作不那麼快 – pirho

+0

我想知道你是如何基準測試的?有50個元素?!您是否閱讀過如何在Java中進行適當的微基準測試?你有沒有聽說過Java的Fork-Join框架? – AKSW

+0

@pirho我有一個Core i3處理器(雙核)。 – Shifar

回答

1

如果我看到正確的,你正在使用的不是Thread.run()Thread.start()執行一個線程(即你應該在你的代碼中使用tUpper.start()tLower.start())。只有第二種方法創建一個新的線程。第一個不是 - 該方法在調用線程中執行。

另請參閱this的問題。

+0

它現在正在工作。謝謝。 – Shifar