Wpis z mikrobloga

Program posiada komunikację klient-serwer. Serwer tworzy wątki ( stoły ) na każdym jest dwóch klientów ( graczy ).
Stół ma licznik czasu który odmierza ile do końca tury zostało graczowi.
1. Czy stół implementować jako klasę implementującą interfejs Runnable? Czy lepiej stosować klasę ExecutorService, niby polecana do wielowątkowości, ale nie wiem po co miałbym mieć pule wątków ( moje wątki - stoły szybko się nie kończą, więc stosunek czasu wydzielenia danych na wątek przez system do jego działania jest chyba opłacalny )
2. Co sprawdza się do odmierzania czasu ( i jak synchronizować czas który klient ma w GUI, z tym co serwer już odliczył )?
3. Jak zaimplementować byt jakim jest "tura" ? Mam pomysł, że metoda stołu jest synchronizowana, jeden gracz zajmuje blokadę, drugi zostaje "zawieszony", potem gdy pierwszy gracz ściąga blokadę, drugi może ją zająć. Jest na to jakiś gotowy mechanizm z java.concurrent ?
Myślałem też, żeby użyć wzorca obserwator, kto ma turę to zwykły boolean na wątku stołu, i żeby klienty nie spamowaly pytaniami czy jego tura, zostaną powiadomieni ( wtedy nie trzeba używać synchronizacji )

#java
  • 2
  • Odpowiedz
@Hatespinner: aplikacja desktopowa, komunikacja przez Sockety. Wolę niższy poziom póki nie ogarniam dobrze webaplikacji i wydaje mi się, że lepiej się nauczę core javy :P
  • Odpowiedz