Jestem w trakcie projektowania aplikacji opartej na języku graficznym Java, która uruchamia szereg oddzielnych zadań, każda w swojej własnej rozszerzonej klasie SwingWorker. Jest to normalny projekt, którego używam, aby uruchamiać zadania na własnych wątkach i nadal utrzymywać EDT za darmo, aby zaktualizować GUI. Każdy SwingWorker jest uruchamiany we własnym wątku za pomocą Executors.newCachedThreadPool.Java Swingworker i wiele wątków
Jednak w ramach jednej konkretnej klasy istnieje zadanie, które wymaga długiego czasu przetwarzania. Zadanie zawiera pętlę for wykonującą niektóre obliczenia do sześciu razy.
Mam pomysł na wdrożenie każdego z sześciu obliczeń w ich własnym wątku, aby przyspieszyć proces przetwarzania, ale nie jestem pewien najlepszego sposobu realizacji tego.
Czy można rozszerzyć SwingWorker i wdrożyć Runnable, a następnie użyć pustej metody Run() w pętli for, uruchamiając nowy wątek za każdym razem lub używając cachedThreadPool.
A może lepiej użyć standardowej implementacji wątku()?
Wszelkie porady lub sugestie będą mile widziane.
góry dzięki
Josh
* "Miałem już pomysł wdrożenia każdego z sześciu obliczeń w ich własnym wątku, aby przyspieszyć proces przetwarzania" * [sic] ... Ten rodzaj obliczeń równoległych, aby przyspieszyć aplikację związaną z procesorem, może być tylko przyśpieszyć, jeśli procesor, na którym działa twoja aplikacja, ma co najmniej 6 rdzeni dostępnych dla twojej aplikacji Java. Jeśli masz tylko, powiedzmy, dwa rdzenie, to tarowanie 6 wątków zamiast dwóch powinno spowolnić twój program ... – TacticalCoder
Ahh tak, to ma sens! Dziękuję. –
@ user988052, który nie ma żadnego sensu. Jeśli masz x wątków, to niekoniecznie potrzebujesz co najmniej x rdzeni, aby program działał szybciej. Dopóki JVM ma więcej niż 1 logiczny procesor, system operacyjny spróbuje rozdzielić te wątki pomiędzy te logiczne procesory. Więcej logicznych procesorów - >> mniej wątków na procesor - >> kończy się szybciej. Może to być o wiele bardziej skomplikowane (na przykład w przypadku kilku blokad), ale zwykle działa w ten sposób. –