Wątki, wąteczki.

Wątki, wąteczki.
herbatek
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Rzeszów
  • Postów:71
0

Witam, mam małe zadanie do sprawdzenia.

Zaimplementuj metody:
public static void runThogether(Runnable... tasks)
public static void runInOrder(Runnable... tasks)
Pierwsza metoda powinna uruchomić każde zadanie w oddzielnym wątku i zakończyć działanie. Druga metoda powinna uruchomić wszystkie zadania w bieżącym wątku i zakończyć działanie po zakończeniu ostatniego z nich.

Kopiuj
public static void runTogether(Runnable... tasks) {

     for(Runnable n : tasks) {
         Thread thread = new Thread(n);
         thread.start();
     }
 }

 public static void runInOrder(Runnable... tasks) {

     for(Runnable n: tasks) 
         n.run();
 }

Jest okej, czy coś "pokiełbasiłem" ?

ŁF
Popraw temat na opisowy, albo wątek poleci do kosza.
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
1

Wydaje się ok, chociaż ja bym w 1 przypadku użył ExecutorService :) I z całkiem dobrej książki korzystasz :)


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
S9
Co to za książka ?
herbatek
Java 8 - Przewodnik doświadczonego programisty - Cay S. Horstmann
herbatek
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Rzeszów
  • Postów:71
0

Okej dzięki wielkie :3 Nie mam pojęcia JESZCZE co to jest ExecutorService :D
Swoją drogą często mam takie dylematy, czy na pewno dobrze zrozumiałem polecenie, czy na pewno wszystko dobrze wykonałem itp. Myślicie, że dobrym pomysłem jest zakładanie co kilka dni nowego tematu, czy może założyć jeden i co kilka dni wrzucać do niego nowe posty z nowymi "dylematami" ? Nie chciałbym zaśmiecać forum :<

S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

W tej książce na początku działu o wielowątkowości jest o Executorach :P


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
herbatek
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Rzeszów
  • Postów:71
0

A to ja dopiero na interfejsach jestem :D Miałem tylko wzmiankę o wątkach i akurat miałem ćwiczenie z tego :D

S9
A. dobra to OK. W sumie sam zaniedługo będę chciał przerobić niektóre ćwiczenia to będe mógł się podzielić :)
herbatek
To jak przerobisz te ćwiczenia to możesz podesłać. Bo ja wszystkie zostawiam sobie w intellij i chętnie porównam czy podobnie zrobiliśmy :>
S9
Prawdopodobnie będe wrzucał na githuba ;]
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1

Rozwiązanie masz zgodne z treścią zadania, chociaż mi bardziej by pasowało jeszcze dodać join na końcu w runTogether - gdyby to nie było czysto dydaktyczne zadanie a np. praktyczny kod.
A jeśli jednak obie wersje miały by działać w tle bez czekania na zakończenie to użyłbym też ExecutorService.
Ta wersja w pierwszym poście jest za to przynajmniej bardzo czytelnie napisana.

Do wątków polecam:
"Java Threads and The Concurrency Utilities" - Friesen, Apress (zawiera ćwiczenia, zaleta - krótko i na temat)
Ew. "Java 7 Concurrency Cookbook" - Gonzalez, Packt (nie czytałem, ale wygląda na praktyczną)

S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

@vpiotr: w tej książce (z której ma ćwiczenia) to był dopiero początek, (rozdział o interfejsach, 3). Później będzie miał opisane lepsze mechanizmy w dziale o wielowątkowości (kolekcje, locki, executory etc), ale to kilka rozdziałów później ;)
Najpierw podstawy ;]
Zresztą tutaj masz spis treści : http://helion.pl/ksiazki/java-8-przewodnik-doswiadczonego-programisty-cay-s-horstmann,jav8pd.htm


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
vpiotr
Nie no spoko, do podstaw wszystkiego OK, tylko tam masz 40 stron o wątkach, ja napisałem na wypadek gdyby ktoś chciał się pouczyć coś więcej o wątkach.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.