我正在基于客户端 - 服务器属性进行扑克游戏。在我的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是这个对象的表。如果有任何帮助,我将不胜感激。