Java 在while循环中等待连接时停止Runnable
我有一个Java 在while循环中等待连接时停止Runnable,java,multithreading,sockets,loops,Java,Multithreading,Sockets,Loops,我有一个Runnable类,它正在等待Socket连接。我想添加JButton,这会导致它停止等待连接并退出循环 这是循环 volatile boolean finished = false; while (!finished) { System.out.println("Server Started...."); clientSocket = serverSocket.accept(); // want to skip this line when the button
Runnable
类,它正在等待Socket
连接。我想添加JButton
,这会导致它停止等待连接并退出循环
这是循环
volatile boolean finished = false;
while (!finished) {
System.out.println("Server Started....");
clientSocket = serverSocket.accept(); // want to skip this line when the button is pressed
if (!clientSocket.isClosed() && ServerSettings.getServerStatus() != -1) {
// start communication
} else {
// close connection
}
}
我寻找这个问题,发现它退出了循环。但这并不能完全解决我的问题。我可以更改finished
变量的值,但要检查新值,我仍然需要跳过等待一次
任何帮助都是可观的。您可以调用该方法。这将停止连接中断。使用
ServerSocketChannel
而不是ServerSocketChannel
,它的accept()
方法不会阻塞。从文件:
public abstract SocketChannel accept()抛出IOException
接受与此频道的套接字的连接
如果此通道处于非阻塞模式,则如果没有挂起的连接,此方法将立即返回null
旁白:真的&&!完成==!完成。@Quilliom:谢谢,我已经更新了帖子。那么,我是否需要在点击时抛出
SocketException
,因为它正在等待?是的。你应该抛出SocketException。