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。