S.....g
S.....g
#java #programowanie #naukaprogramowania #programujzwykopem #informatyka

Znacie jakiś poradnik dotyczący wątków pisany zrozumiałym językiem z praktycznymi przykładami dla początkującego? Jestem jeszcze za 'zielony' bo nic nie rozumiem np. z #javastart
  • Najlepsze
  • Wszystkie komentarze
Alkreni
@anonim1133: Czo te dzisiejsze programisty. Za moich czasów ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
rex1313
@Szczypioreg: Możesz użyć Timerów. Ja też niedawno pisałem pierwszą gierkę w Javie, ale nie uczyłem się z javastart, tylko z innego płatnego kursu. Wprawdzie główna pętla gry działała w oddzielnym wątku, to była obsługiwana przez Timer, a nie przez thread.sleep. Dodatkowo mam tych Timerów kilka i używam w zależności od tego co się dzieje w grze (np czasowe bonusy) i.t.d. Co do prędkości pocisku, czy innych rzeczy. Ja robiłem zmienną
Alkreni
@Szczypioreg: Jeśli chcesz napisać program wielowątkowy, to powinieneś coś wiedzieć o współbieżności.
anonim1133
@Szczypioreg: Ja w Java nie mówię, ale w sieci pewnie łatwo coś znajdziesz ;)

q.....s
q.....s
@Szczypioreg: oj, teoria wątków jest trudniejsza niż praktyka, tak ci powiem... wiele frameworków robi wiele za ciebie w tej kwestii, często wielowątkowość jest niepotrzebna tam gdzie wydawałoby się, że jest potrzebna (ot, masz pętlę)... jeżeli znasz C++ to poczytaj o QThread i Qt Concurrent - to pierwsze to "ręczne" zarządzanie wątkami, a to drugie pokazuje jak to się dzisiaj robi, że nie trzeba o tym myśleć.
alosha
@Szczypioreg: A po co chce Pan rozwiązywać problemy równolegle przy pomocy wątków? Dobrze, że wstawek ASMa Pan nie chce do tego pisać ;-)
Nie twierdzę, że wątki to bzdet i badziew. Twierdzę, że jeśli jest Pan zielony, to niech Pan zacznie od przetwarzania zadań w sposób równoległy, a nie wątkowy. (To jest różnica)
q.....s
q.....s
@Szczypioreg: oj, oj, oj! Nie. Nie rób tak. :D
S.....g
S.....g
@qtsms: Dzięki za pomoc. Teraz już raczej rozwiąż ten problem ( ͡° ͜ʖ ͡°)
Alkreni
@Szczypioreg: Monitory, semafory, komunikaty ( ͡º ͜ʖ͡º)
anonim1133
@Alkreni: Jak będzie wiedział to spoko, a może użyć jakiejś biblioteki która wie za niego :P
anonim1133
@Alkreni: Wiadomo, że to wszystko zależy. Czasem jednak trzeba wiedzieć, ale przy jakichś prostych sprawach... ;)
S.....g
S.....g
@qtsms: Niestety, ale Java to mój pierwszy język którego się uczę.

@Alkreni: No to biorę się za czytanie.

@anonim1133: Jakiś przykład takiej biblioteki? ( ͡° ͜ʖ ͡°)
q.....s
q.....s
@Szczypioreg: docs.oracle.com/javase/tutorial/essential/concurrency/ - powodzenia, z Javy to wiem tylko gdzie dokumentację można dostać. ;-)
q.....s
q.....s
@alosha: zgadzam się z tą opinią. Dopiero przy trzecim języku wykorzystałem wątki...
Alkreni
@Szczypioreg: Wiesz co to jest sekcja krytyczna?
q.....s
q.....s
@alosha: dlatego, że lepiej wrócić do głównej pętli (którą i tak musi mieć każda gra), a potrzeba używania thread.sleep pojawia się najczęściej wtedy kiedy ta pętla jest źle wykonana, ew. wyświetlanie gry jest zbyt powiązane z silnikiem gry... gra w czołgi jest do tej pory jednowątkowa, podaj mi powód dla którego chciałbyś uspać główny wątek programu? Obsługa inputu odpada w tym momencie, co jeżeli ktoś kliknie klawisz gdy cały program
alosha
@qtsms: A, przy takim tłumaczeniu, to się oczywiście zgodzę.
W pierwszej chwili to zrozumiałem to tak, że jest jakaś demoniczna magia za Thread.sleep samym w sobie. ;-)
q.....s
q.....s
@Szczypioreg: masz główną pętlę gry która dzieje się co np. 100 milisekund i licząc przejścia tych pętli ustalasz na podstawie zmiennych (np. prędkości pocisku) gdzie ten powinien się znajdować (10 pół na sekundę to zmiana pozycji pocisku co dziesiątą pętlę o jedno pole w kierunku w którym leci). Każde przejście pętli kończysz funkcją draw() która pobiera dane z tablicy (już zaktualizowanej o te wszystkie zmiany jak ruch wrogów) i na
S.....g
S.....g
@Alkreni: Rozumiem że to ma dużo wspólnego z wątkami?
S.....g
S.....g
@alosha: Robię mini grę czołgi 2D i (tak w dużym skrócie) nie znam innego sposobu na zatrzymanie czegoś na moment niż "Thread.sleep(x)". Więc rozwiązanie mojego problemu z wątkami to może i nawet kwestia jednej linijki (zamiennika) :-)