2011-11-21 9 views
20

w mojej aplikacji, muszę rozwiązać problem, wykonując wiele powiązanych zadań sieciowych i czasami jedno związane zadanie i podzielić na mniejsze zadania związane. Zadania te są obecnie wykonywane za pomocą standardowego mechanizmu wątków Java. Zastanawiam się, czy mogę przejść do frameworka fork-and-join? Ale pytanie brzmi, czy framework forkandjoin jest zwykle używany do rozwiązywania związanych operacji lub procesora związanego? Zakładam, że są to głównie operacje związane z CPU, ponieważ struktura fork-and-join wykorzystuje technikę kradzieży pracy do korzystania z procesorów wielordzeniowych, ale jeśli użyję jej do zadań związanych z IO, czy wystąpi jakikolwiek niepożądany efekt?Czy pula wątków Java-fork-and-join jest dobra do wykonywania zadań związanych z IO?

+0

"Dobrze" według jakiego kryterium? Jakie rodzaje I/O? Networking? Dysk? Konsola? GUI? Czy fork-and-join naprawdę jest "pulą wątków"? – EJP

+0

to zadanie związane z siecią io. – Shamik

+0

wnikliwe pytanie; przegłosowane – necromancer

Odpowiedz

23

Łączenie wideł jest przeznaczone do zadań związanych z obliczeniami, więc generalnie powiedziałbym, że nie. Złącze fork-join ma interfejs API (api ManagedBlocker), aby poinformować frameworku FJ, że twój wątek będzie blokował przez pewien czas i nie będzie ustawiał w linii nowych zadań, ale jest naprawdę zaprojektowany na krótkie oczekiwanie (np. Uzyskanie blokady), a nie arbitralnie długi czeka na IO.

Mamy system, który korzysta z łączenia widełek, a my ograniczamy zadania związane z IO do osobnej puli executorów. Kiedy dane przychodzą, uruchamia zadania w puli łączenia wideł, tak że tylko praca związana z cpu występuje tam.

2

Jeśli próbujesz rozwiązać problem związany z "I/O bound" twojego problemu, wątpię, aby zmiana ze standardowych wątków na fork-and-join poprawi ... zakładając, że zaimplementowałeś bieżące rozwiązanie oparte na wątku. (I na podstawie odpowiedzi Alexa Millera, zmiana mogłaby znacznie pogorszyć sytuację.)

Albo inaczej mówiąc, sposobem na przyspieszenie aplikacji związanej z I/O jest rozwiązanie problemów, które sprawiają, że I/O bound ... lub zwiększ przepustowość we/wy systemu.

1

W tym przypadku nie ma przekonującej przewagi w przypadku połączeń wideł.

nie wydaje się być niekorzystnym znakiem drogowym, ponieważ nie byłoby zbyt trudne do prowadzenia.

w sumie, pozostałbym z pulą wątków, dopóki nie będziesz miał innego ważnego rozwoju.

Powiązane problemy