Не могу использовать правильно ждать и

Я пишу покер на основе свойств клиент-сервер. В моей таблице 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 - таблица этих объектов. О был бы благодарен за любую помощь.

0 ответов

Другие вопросы по тегам