【Java并发编程】设计模式-两阶段终止

本文介绍了如何使用Java的interrupt方法来优雅地结束线程,避免使用stop方法导致的资源泄露问题。示例代码展示了一个监控内存使用的线程,在接收到中断信号后能够执行清理操作并安全退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

public class DesignModuleDoubleParse {
    public DesignModuleDoubleParse() {
    }

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            while(true) {
                Thread current = Thread.currentThread();
                //如果线程被打断了
                if (current.isInterrupted()) {
                    System.out.println("料理后事......");
                    return;
                }
				//如果线程没被打断
                try {
                    Thread.sleep(500L);
                    System.out.println("监视内存使用情况......");
                } catch (InterruptedException var2) {
                    current.interrupt();
                    var2.printStackTrace();
                }
            }
        }, "第一个线程");
        t1.start();
        t1.join(6000L);
        System.out.println("终止t1线程运行");
        t1.interrupt();
    }
}

这个设计模式用于优雅的结束线程。在线程被kill之前可以执行一些善后工作。
错误思路:用stop()方法直接结束线程。如果此线程正获得了锁,该锁将永远不被释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值