java - java中的中断线程

标签 java multithreading garbage-collection interrupt

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

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

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

我有一个实现 Runnable 的服务器类,当客户端连接时,我创建一个扩展 Thread 的客户端类的对象。服务器和客户端类的 run 方法中都有:

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

服务器创建一个这样的客户端:

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

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

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

在这种情况下我有什么选择?如果您错过任何信息,请发表评论,我会立即修复。

最佳答案

由于Server和Client处于不同的线程,如果中断Server线程,则不会中断Client线程。在其他线程中启动的线程独立于其父线程,因此如果父线程停止,子线程可以继续运行。

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();

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

关于java - java中的中断线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665619/

相关文章:

java - java ExecutorService newSingleThreadExecutor 是否仅使用一个线程执行所有任务?

c++ - 如果我将工作发布到线程池并且线程已经在 boost 中工作,会发生什么情况?

java - java线程环境下的解耦

java - 以图像为背景的 Jbutton 无法单击

java - ImageView - 显示新图像并在 1 秒后重置 - onClick

java - 搜索A 'SubArray'

java - 选择垃圾收集器的性能指标

algorithm - 对停顿最少的垃圾回收算法感兴趣,愿意牺牲空间

c# - 分割 10k 页 PDF 时出现内存泄漏(iTextSharp PDF API)

java - 转换变量的问题