Wpis z mikrobloga

Pytanie nieco opisowe, bo ciezko mi zebrac w jedno zdanie co chce osiagnac bo dopiero niedawno zaczalem przygode z java i staram sie wszystko o czym sie dowiaduje od razu przenosic do kodu, przez co mozliwe ze pytam o cos prostego czego jeszcze nie docxytalem ;d
1. Mam dwa watki t1 t2, jeden z nich sortuje tablice Insertem, drugi Bubblesortem (najprostsze do napisania, ale akurat nie o tym). Chce zaraz po tym jak watek sie skonczy uzyskac ten array i wyprintowac go do konsoli. Tyle ze Thread sam w sobie nic nie zwraca (operuje na klonie a nie oryginalnym arr), wywolanie metody np getArr() zwroci arr nieposortowany (watek jeszcze nie posortowal) lub zablokuje cala reszte kodu jezeli poczekam na zakonczenje watku uzywajac t1.join(). W jaki sposob go wyprintowac nie dajac System.out.print() na koncu bloku run()? Ominac problem umiem, rozwiazac nie :/

2. W jaki sposob najlepiej stworzyc metode statyczna jakisarray.sort(param) ktora bedzie uruchamiala odpowiedni watek z algorytmem w zaleznosci od parametru sort? Posrednia klasa ktora przesloni domyslne sort() i deklarowanie tych tablic jako obiekty typu tej klasy? Czy moze zostawienie w spokoju .sort() i rozszerzenie Collects poprzed dodanie statycznych metod typu .sortBubble(), .sortInsertion() itp?
#programowanie #java #naukaprogramowania
  • 5
  • Odpowiedz
@artikow: @kapelusz: Dziekuje, udalo mi sie napisac z wykorzystaniem Callable i executorem, a nastepnie petla while() ktora sprawdza po kolei kazdy watek czy juz zwrocil wynik oraz konczy sie gdy wszystkie watki skoncza prace. Nie wiem czy to dobry sposob ale dziala ;)
  • Odpowiedz
Nie wiem czy to dobry sposob ale dziala ;)

@Vitin: Jeśli chcesz coś robić w zależności od wyniku wcześniejszych działań w osobnych wątkach, to polecam rzucić okiem na CompletableFuture - wygodnie się tego używa.
  • Odpowiedz