Не могу использовать правильно ждать и
Я пишу покер на основе свойств клиент-сервер. В моей таблице TH[] у меня есть потоки, отвечающие за связь с клиентом (GUI). Вот часть моего кода:
clientSocket = echoServer.accept();
numConnections = numConnections + 1;
NewPlayer = new PlayerConnected(clientSocket,numConnections,this);
NewPlayer.start();
System.out.println("Player" + numConnections + " connected to the server.");
TH[numConnections-1] = NewPlayer;
....
....
System.out.println("Moves count equal to: "+Moves);
for(int i=0;i<=members-1;i++)
if(TH[i].isAlive())
if(i == Turn){
System.out.println("Player of index "+ i +"was given a turn");
((PlayerConnected) TH[i]).Turn();}
else{
System.out.println("Player of index "+ i +"was orderd to wait");
((PlayerConnected) TH[i]).WAIT();}
public synchronized void WAIT(){
try {
wait(15000); //15 sec for turn
} catch (InterruptedException e) {
e.printStackTrace();
}
}
К сожалению, когда выполняется этот блок кода, это занимает 2 потока 15 секунд. Мой метод WAIT() заставляет один из потоков ждать 15 секунд. Почему вся программа ждет? Например, для 2 потоков я намеревался заставить один поток ждать и ничего не делать, когда у другого есть время для продолжения. Я собираюсь изменить его без создания thread.wait, но я хотел бы знать, почему основной поток ожидает вместо TH[i] PlayerConnected класс потока, а TH - таблица этих объектов. О был бы благодарен за любую помощь.