Mam wiele wątków, każdy z własną prywatną kolejką współbieżną i wszystko, co robią, to uruchamianie nieskończonej pętli pobierania wiadomości z niego. Może się zdarzyć, że jedna z kolejek nie odbierze wiadomości przez pewien okres czasu (może kilka sekund), a także może dojść do dużych wybuchów i konieczne jest szybkie przetwarzanie.Współbieżność Java - czy należy zablokować lub zwiększyć wydajność?
Chciałbym wiedzieć, co byłoby najbardziej odpowiednie do zrobienia w pierwszym przypadku: użyj kolejki blokowania i zablokuj wątek, dopóki nie będę mieć więcej danych wejściowych lub wykonaj Thread.yield()?
Chcę mieć jak najwięcej zasobów procesora w danym momencie, ponieważ liczba jednoczesnych wątków może wzrastać z czasem, ale też nie chcę, aby przetwarzanie komunikatów było opóźnione, ponieważ nie ma żadnej gwarancji od momentu, w którym wątek zostanie ponownie zaplanowany do wykonania przy wydajności(). Wiem, że sprzęt, system operacyjny i inne czynniki odgrywają tutaj ważną rolę, ale odsuwając je i patrząc na nie z punktu widzenia Javy (JVM?), Jaki byłby najbardziej optymalny?
Nie, po prostu spróbuj biblioteki [disruptor] (https://github.com/LMAX-Exchange/disruptor). Wydaje się, że najlepsze wyniki osiągnął tylko zysk! – qinxian