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?
Odpowiedz
Łą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.
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.
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.
- 1. Pula wątków do wykonywania arbitralnych zadań o różnych priorytetach
- 2. Pula wątków PHP?
- 3. Pula wątków w Javie
- 4. (W jaki sposób) Czy pula wątków używa CLP (TPL)?
- 5. kolejność wykonywania Haskell IO
- 6. Obsługa wątków "duplikowanie" zadań
- 7. Kontroler Web Api i Pula wątków
- 8. .NET wątki wątków i asynchroniczne wątki IO
- 9. Test jednostkowy Widok kolby kpiący z zadań związanych z selerem
- 10. Pula wątków w języku Python obsługująca wyjątki
- 11. Przesyłanie zadań do puli wątków daje RejectedExecutionException
- 12. wykonywania zadań równolegle pytona
- 13. Czy Cassandra jest dobra do przechowywania plików?
- 14. Wymuszanie wykonywania zadań w Gradle
- 15. Kontrolowanie kolejności wykonywania zadań za pomocą ExecutorService
- 16. Jak skonfigurować sprężynę do wykonywania nakładających się zadań fixedRate?
- 17. Jak zaimplementować autoregulację dla zadań związanych z selerem
- 18. Pula nici nie zmienia rozmiaru
- 19. Czy programowanie asynchroniczne w węźle node.js przyspiesza wykonywanie zadań związanych z procesorem?
- 20. Określanie kolejności wykonywania zadań w Javie
- 21. Czy asynchronizacja/oczekiwanie jest odpowiednia dla metod, które są powiązane z IO i procesorem?
- 22. Dobra praktyka do wielowątkowości
- 23. Dlaczego Perl jest najlepszym wyborem dla większości zadań związanych z manipulowaniem ciągami?
- 24. czy jest jakaś pula dla ThreadingMixIn i ForkingMixIn dla SocketServer?
- 25. Czy w języku Java istnieje wieloznaczna pula wątków z możliwością indeksowania?
- 26. Pula wątków Tomcat? Skomentowane w tomcat.conf, powinienem go użyć?
- 27. Po uruchomieniu FileSystemWatcher - Pula wątków lub dedykowany wątek?
- 28. Dostęp do danych związanych z projektem z polecenia Gradle
- 29. Co to jest dobra przeglądarka bezgłosowa do pracy z kątomierzem?
- 30. Czy liczba zadań jest ograniczona?
"Dobrze" według jakiego kryterium? Jakie rodzaje I/O? Networking? Dysk? Konsola? GUI? Czy fork-and-join naprawdę jest "pulą wątków"? – EJP
to zadanie związane z siecią io. – Shamik
wnikliwe pytanie; przegłosowane – necromancer