Wpis z mikrobloga

#java #programowanie
Mirki, piszę aplikację, która jednym z zadań jest odpalenie różnych procesów w tle i monitorowanie ich. Niektóre procesy muszą poczekać z wystartowaniem, aż skończą się wcześniejsze. Wszystkie procesy odpalam w nowych wątkach stworzonych w mainie. Jaki jest najlepszy sposób, aby przekazać informacje do maina, że dany proces wystartował/skończył się błędem/zakończył się bez błędu?
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Problem jest w tym, ze te procesy odpalam w mainie. Chcialbym co sekude je monitorowac i sprawdzac czy dalej zyja, jesli nie zyja to np rzucic wyjatek, a nastepnie ten wyjatek zlapac w mainie i go obsluzyc. Myslalem o @Scheduled, ale nie mialbym jak z niego przekazac wyjatku do maina

@Sztuczny_Snieg:
  • Odpowiedz
@grizzly_joe: W zależności od poziomu skomplikowania aplikacji, możesz sobie skorzystać z plain Java i wykorzystać CompletableFuture. Możesz też, jak pisał @aso824, wykorzystać jakieś kolejki - nie musi to być żaden JMS, a wystarczy kilka zwykłych BlockingQueue.

https://www.baeldung.com/java-completablefuture
https://www.baeldung.com/java-9-completablefuture

I przystępny wstęp do Java Concurrency: http://tutorials.jenkov.com/java-util-concurrent/index.html
  • Odpowiedz
@grizzly_joe: https://gist.github.com/Undersent/1a457c6524e98f56261e7887996f73f8
Nie wiem czy Cie to satysfakcjonuje i czy w ogole o to Ci chodziło. Mniej więcej jest tak że są dwie listy na których wykonują się taski. Zadania z pierwszej listy wykonują się po kolei, zadania z drugiej listy również wykonują sie po kolei. Dodatkowo dwie linie kodu jeżeli byś potrzebował zwracać wartość z tasków. Daj znac co i jak :)
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@grizzly_joe: zobacz czy możesz użyć rxjavy i przekazywać do nowych wątków observable I emitować wartości z tych wątków i po prostu reagować na te emitowane wartości z maina
  • Odpowiedz