不能正常使用等待

时间:2014-11-09 14:57:23

标签: java multithreading wait

我正在基于客户端 - 服务器属性进行扑克游戏。在我的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 个答案:

没有答案
相关问题