线程在继续之前等待 Server/Client

Thread wait for Server/Client before proceeding

如何在使用一台服务器和多个客户端时同步线程?

public static void main(String[] args) {
        
    // Creates and starts instance of the "Server" class
    Server s = new Server();
    s.start();
    
    // Creates and starts 2 instances of the "Client" class
    for(int i=0; i<2; i++) {
        Client c = new Client();
        c.start();
    }
        
}

我的输出如下所示:Please enter number: Please enter number:

但它应该是这样的:

Please enter number: 用户输入数字

Please enter number: 用户输入数字

客户端和服务器 类 看起来很熟悉,如下所示:

public class Client extends Thread {

    public void run() {
        //
    }

}

我想你正在寻找这个 Thread.join()

如何使用?

如果你有一个客户,说 Client client1 = new Client();

并且您希望另一个客户端应该 运行 在该客户端完成其任务后,您可以像这样创建一个新客户端。

client1.start();
client1.join();
Client client2 = new Client();
client2.start();

你可以像这样在循环中使用它:

for(int i=0; i<2; i++) {
    Client client = new Client();
    client.start();
    client.join();
}

它是如何工作的?

对线程执行join() 会使启动此新线程的线程进入等待状态。它保持等待状态,直到执行 join() 的线程终止或被中断。 join() 之后的任何代码都不会执行,直到调用此方法的线程终止。

在你的例子中,主线程进入等待状态。