线程在继续之前等待 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()
之后的任何代码都不会执行,直到调用此方法的线程终止。
在你的例子中,主线程进入等待状态。
如何在使用一台服务器和多个客户端时同步线程?
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()
之后的任何代码都不会执行,直到调用此方法的线程终止。
在你的例子中,主线程进入等待状态。