Java Thread.Join()方法未等待线程完成
我有这段代码:CustomerClient基本上是一个扩展线程的类。 我正在尝试生成多个线程,但一次只能生成一个线程。但是,我得到一个非法的线程状态异常。我做错了什么Java Thread.Join()方法未等待线程完成,java,multithreading,Java,Multithreading,我有这段代码:CustomerClient基本上是一个扩展线程的类。 我正在尝试生成多个线程,但一次只能生成一个线程。但是,我得到一个非法的线程状态异常。我做错了什么 CustomerClient cusClient = new CustomerClient("B", server_IP_1, server_Port_1, server_IP_2, server_Port_2); while (true) { System.out.println
CustomerClient cusClient = new CustomerClient("B", server_IP_1,
server_Port_1, server_IP_2, server_Port_2);
while (true) {
System.out.println("new thread A");
cusClient.start();
cusClient.join();
}
一个线程只能启动一次。所以每次在循环中都需要初始化线程对象
while (true) {
CustomerClient cusClient = new CustomerClient("B", server_IP_1,
server_Port_1, server_IP_2, server_Port_2);
System.out.println("new thread A");
cusClient.start();
cusClient.join();
}
请分享完整的例外情况您根本没有创建新线程(除了一次)。在现有线程上重复调用
start()
。不相关的建议:您几乎不应该有一个类扩展线程,而应该实现Runnable。在这种情况下,您将创建一个新的Runnable,将其放入一个新线程,并在while循环中启动该线程。@Gray:他在问题的开头声明CustomerClient扩展了线程。您是否添加了与业务逻辑同步的内容???@Gray在无限循环中启动同一线程将给出例外直到,这很奇怪。以这样的串行形式调用start()
然后调用join()
,本质上与根本不使用任何线程是一样的。@JasonC:是的,这听起来像是一个经典。