我們使用的是Java 7並且正在開發多線程數據處理應用程序。由於某些限制,我們不使用spark或任何其他map-reduce方法來解決此問題。這個項目的想法是最大化使用多線程的應用程序的性能。Java線程數量>內核數量和垃圾回收數量
我的理解是,在任何給定的點上,考慮到CPU除了OS之外沒有其他任何東西運行,同時工作的線程數量將等於CPU提供的超線程數量。但是有一些java GC可以隨時使用。我們也必須考慮這一點。
此外,我知道,如果我創建更多的線程,然後實際上會降低性能,因爲花費在上下文切換上的時間。
問題是考慮所有這些事情並創建適當數量的線程的最佳方式是什麼。任何想法或思考過程?我應該考慮其他過程嗎?
那麼,fork-join框架在Java 7上是可用的。 –
@SleimanJneidi fork-join可用,但使用正確很痛苦。如果你想使用Fork-Join,我強烈建議使用Java 8來爲你做這件事。即不要直接使用它,除非你真的知道你在做什麼。例如如果你想用fork-join矩陣乘法,請複製Doug Lea的實現。 –
確實如此,但它比fixedThreadPool更具可擴展性我想 –