有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的多线程中断线程

我已经学习Java将近8个月了,我对中断线程有点困惑

我有一个JavaFX多线程应用程序,它在tableview中显示所有连接的客户端(ip和端口等)

当程序启动时,我输入端口号并按下开始按钮,这将启动服务器类

我有一个实现Runnable的serverclass,当客户端连接时,我创建一个扩展线程的客户端类对象。server和client类的run方法中都包含:

public void run(){
    while (!Thread.currentThread().isInterrupted()){

服务器创建的客户端如下所示:

new Thread(new Client(socket)).start();

我想知道的是,如果我创建一个停止按钮,它调用服务器类中的一个中断服务器线程的方法,那么客户端线程也会自动中断吗

我真正想要的是能够在不重新启动程序的情况下更改端口。当然,如果我切换到另一个端口,我不希望线程继续在后台运行

在这种情况下,我有什么选择?如果您遗漏了任何信息,请留下评论,我将立即修复


共 (1) 个答案

  1. # 1 楼答案

    由于服务器和客户机位于不同的线程上,如果中断服务器线程,它将不会中断客户机线程。在其他线程中启动的线程独立于其父线程,因此如果父线程停止,子线程可以继续运行

    Thread t = new Thread(new Runnable(){
    
        new Thread(new Runnable(){
            for(int i = 0; i < 1000; i++) System.out.println(i);
        }).start;
    
    }).start();
    
    t.interrupt();
    

    子线程应该继续运行程序,因为它与父线程位于不同的线程中。父线程的主要工作是启动子线程,如果它死了,子线程将继续生存