Witam, czy ktoś może mi podsunąć pomysł w jaki sposób mogę przechodzić po klientach, jeśli dla każdego z nich tworzony jest osobny wątek i wszystkie one znajdują się w tablicy? Mianowicie zależy mi na tym, aby wątek 0 wykonywał jakieś zadanie, w danym momencie pozostałe czekają. Po zakończeniu pracy wątek 1 zostaje uruchomiony i wykonuje pewną czynność, pozostałe czekają itd. Myślałem o czymś takim:
while (true)
{
for (server.setIterator(0); server.getIterator() < 10; server.increment())
{
if (tablicaZWątkami[server.getIterator()] == Thread.currentThread())
{
//polecenia
}
}
}
server.increment - inkrementuje licznik
server.setIterator() - ustawia wartość licznika
server.getIterator() - zwraca wartość licznika
Próbowałem synchronized po otwarciu pętli while na obiekcie String z servera, bo jest wspólnym obiektem dla wszystkich wątków, jednak nie sprawdziło się. Przerobienie tego na funkcję synchronized też średnio w tym wypadku pasuje, ze względu na to, że //polecenia zawierają wczytywanie tekstu i wysyłanie komunikatów z czym może być problem ze strony servera, ponieważ w wątku mam już do tego celu stworzone obiekty PrintStream i DataInputStream. Chyba najlepiej by było użyć sekcji krytycznych, tylko coś nie działają.