Witam.
Tworzę program o strukturze client <-> server z możliwością podpięcia wielu klientów do tego samego serwera.
Plan jest taki, że każdy klient jest obsługiwany przez jeden wątek serwer'a który odbiera do niego pakiety danych, a następnie wywołuje event mający na celu odpowiednie obsłużenie pakietu.
- Przychodzi pakiet od klienta do wątku serwera
- Pakiet jest deserializowany
- Utworzony zostaje obiekt dziedziczący po event wypełniony danymi z pakietu
- Event jest dodawany do listy "event's to perform" (lista wspólna dla wszystkich wątków)
- Wątek odpowiedzialny za wykonywanie eventów gdy tylko jest wolny pobiera następny event z listy i go obsługuje
I teraz tak: Nie mam zbyt dużego doświadczenia jeśli idzie o wątki dlatego się was pytam, jak zrobić tą liste... dokładniej chodzi mi o to czego mam użyć na liście?
Guarded, synchronization czy nic?
Oraz jak mam zrobić wątek odpowiedzialny za wykonywanie, dać go po prostu w nieskończoną pętle sprawdzającą czy list jest pusta, czy raczej tak: ?
while(true) {
if(list.isEmpty()){
try {
wait();
} catch (InterruptedException e) {}
}else{
//wykonanie eventu
}
//sprawdzanie czy przypadkiem serwer nie chce zakonczyc pracy = przerwanie petli
}
i teraz po dodaniu czegoś do listy wywoływane było by "notifyAll()"
Z góry dzięki za pomoc.