Nowy wątek

0

Witam

Mam pytanie co do idei klasy Thread.

private Thread watek;

public void start {
watek = new Thread(this);
watek.start();
}

Klasa zawierająca metodę start implementuje interfejs Runnable i głównie używa się to w programowaniu gier z metodami stop(), start(), run() itp.

Czemu trzeba tworzyć taki wątek ? Kiedy istnieje potrzeba użycia wątków w programowaniu ?

0

Każdy proces ma jeden wątek główny. Możesz tworzyć dodatkowe wątki aby obliczenia były wykonywane równolegle tzn w tym samym czasie, bo komputer wykonuje operacje sekwencyjnie... tzn zawsze jest w jednym miejscu twojego kodu, wątki pozwalają na to, aby był w wielu miejscach na raz, dzięki czemu działa szybciej. Weźmy jeszcze sytuacje, gdy twój kod ma co sekunde dodawać do liczby +1 taki licznik, gdy nie stworzysz dodatkowe wątku, twój wątek główny będzie siedział w tej pętli dodającej co sekundę +1 i nie będzie miał możliwości robienia innych rzeczy jak wyrenderowanie klatki gry, czy wykonywania akcji typu ruszanie się postaci

0

Jest pora obiadu, idziesz do swojej ulubionej restauracji. Zajmujesz miejsce i rozglądasz się wokół - sala jest niemal pusta. Znajduje się w niej kelner, jeden klient jedzący obiad oraz Ty. Kelner obsługuje tego drugiego klienta, ale - co dziwne - zupełnie Cię ignoruje. Nawet gdy poprosiłeś o menu, kelner zachowuje się tak, jakby Cię w ogóle nie było, dolewając napój drugiemu klientowi. W końcu drugi klient wychodzi, a kelner - jak gdyby nigdy nic - podchodzi do Ciebie i zaczyna Cię obsługiwać.

Powyższy tekst jest przykładem programu "Kelner jednowątkowy" z jednej książki Davida Brackeena.

0

Krzywy Mleczarz - ale przecież za czasów programowania strukturalnego nie tworzyło się żadnych wątków w kodzie a mimo to pisało się programy jak Norton Commander. Jednocześnie wyświetlał zegar i można było chodzić po menu.

Te wątki to chyba taka cecha Javy, że bez takiego stylu program by źle działał, tak trzeba napisać i tyle mimo, że niezbyt to intuicyjne.

Kiedyś się uważało, że assembler jest trudny xD Moim zdaniem assembler przy językach obiektowych jest o wiele bardziej intuicyjny i łatwiejszy.

0

Wątki to nie cecha javy tylko systemu operacyjnego, system ma procesy każdy proces ma przynajmniej jeden wątek możesz w nim utworzyć więcej które będą potomkami wątku głównego, za czasów programowania strukturalnego tworzyło się wątki. Po prostu system dostarcza Ci pewne API, które jest wykorzystywane przez interpretery, wirtualne maszyny, lub same języki programowania - Java używa wirtualnych maszyn jako pośrednika tworzenia wątków rozkazuje mu zapytać się windows'a linux'a zależy od implementacji VM, a taki C sam obsługiwał API np windows'a

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0