Pytanie Czy pula wątków Java-fork-and-join jest dobra do wykonywania zadań związanych z IO?


w mojej aplikacji muszę rozwiązać problem, wykonując wiele zadań związanych z siecią i czasami jedno powią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?


21
2017-11-21 01:24


pochodzenie


"Dobre" według jakiego kryterium? Jakie rodzaje I / O? Networking? Dysk? Konsola? GUI? Czy fork-and-join naprawdę jest "pulą wątków"? - user207421
jego zadanie związane z siecią. - Shamik
wnikliwe pytanie; przegłosowane - necromancer


Odpowiedzi:


Łączenie wideł jest przeznaczone do zadań związanych z obliczeniami, więc generalnie powiedziałbym, że nie. Łączenie wideł ma API ( ManagedBlocker api), aby poinformować frameworku FJ, że twój wątek będzie blokował przez pewien czas i nie będzie składał nowych zadań, ale jest naprawdę zaprojektowany na krótkie oczekiwanie (jak na przykład uzyskanie blokady), a nie arbitralnie długo czeka na IO.

Mamy system, który korzysta z fork-join i blokujemy 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.


24
2017-11-21 02:01





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

Innymi słowy, sposób na przyspieszenie działania aplikacji I / O polega na rozwiązaniu problemów, które sprawiają, że wejście I / O jest powiązane ... lub zwiększa przepustowość we / wy systemu.


2
2017-11-21 02:00





w tym przypadku nie ma przekonującej przewagi przy łączeniu wideł.

nie wydaje się, że jest to niekorzystne z powodu znacznej niedogodności, ponieważ nie byłoby zbyt trudnym środkiem napędowym.

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


1
2017-11-21 02:07