【Thinking in Java读书笔记】如何安全的终止线程

本文深入探讨Java中线程的终止方法,包括通过标识符、interrupt()等手段终止线程,以及线程进入阻塞态的原因。通过《Thinking in Java》的建议,了解如何安全高效地管理线程生命周期。

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

转载请注明原文地址:http://blog.youkuaiyun.com/mxm691292118/article/details/51120048

我把Android重难点和读书笔记都整理在github上:https://github.com/miomin/AndroidDifficulty

如果你觉得对你有帮助的话,希望可以star/follow一下哟,我会持续保持更新。


参考资料:《Thinging in Java》

引言:在较早的Java代码中,是使用suspend()和resume()来终止和唤醒线程,但是现在已经被废止了,因为可能导致死锁。stop()强制终止线程的方式也已经不推荐使用,因为它不释放线程获得的锁,还会产生一些不可预料的后果。下面看看《Thinging in Java》中建议我们如何来终止线程。


一、线程进入阻塞态的原因

  • 在阻塞态中终止线程,需要做一些处理,让线程跳出阻塞态,所以有必要先来了解一些一个任务进入阻塞态的原因:

    • (1)通过调用sleep()使线程进入阻塞态(休眠)。
    • (2)通过wait()使线程挂起进入阻塞态,直到线程收到notify()的消息,线程才会重新进入就绪态。
    • (3)等待I/O操作的完成
    • (4)等待锁
  • 进入阻塞态的线程,调度器会忽略线程,不会分配任何CPU时间。


二、通过标识符终止线程

  • 通过设置flag为false的方式,让线程跳出while循环,从而终止线程。(如果线程已经进入while循环,且处于阻塞状态,这种方式将无法立即解除线程阻塞)
    static class MyThread extends Thread {

        private volatile boolean isRunning = true;

        @Override
        public void run() {
            while (isRunning) {
                System.out.println("Running");
            }
        }

        public void stopMyThread() {
            isRunning = false;
        }
    }

三、调用interrupt()

  • 很显然,这是一种更优雅的终止线程方式,配合Thread.interrupted()的检测,在阻塞中通过抛出异常来安全退出线程。
    static class MyThread extends Thread {

        @Override
        public void run() {
            try {
                while (!Thread.interrupted()) {
                    Thread.sleep(100);
                    System.out.println("Running");
                }
            } catch (InterruptedException e) {
                // TODO 结束线程
            } finally {
                // TODO 释放资源
            }
        }
    }

    MyThread myThread = new MyThread();
    myThread.start();
    // 终止线程
    myThread.interrupt();
内容概要:本文档详细介绍了基于Python的在线二手电子产品回收系统的设计与实现。项目旨在通过构建一个可靠、安全、透明的平台,提高废旧电子产品的回收率,推动资源的合理再利用,提供安全可靠的交易平台,加强环保意识,促进二手市场的发展,并实现数据驱动的智能化服务。项目面临的主要挑战包括废旧电子产品的检测与评估、信息不对称与交易风险、市场需求的预测与定价、用户体验优化及平台的安全性与数据保护。解决方案涵盖智能化评估与回收定价、高效的二手产品处理流程、完善的售后保障体系、创新的市场需求分析、全程透明化与安全性保障以及定制化用户体验。系统采用微服务架构,包括用户管理、商品评估、交易管理、数据分析、支付与结算等模块。项目还涉及前端界面设计、API接口开发、数据库设计与实现、模型训练与优化、部署与应用等方面。 适合人群:具备一定编程基础,特别是对Python和Web开发有一定了解的研发人员,以及对二手电子产品回收和环保事业感兴趣的从业者。 使用场景及目标:①帮助用户方便地将闲置电子产品回收、交易或再利用,提高废旧电子产品的回收率;②通过智能化的数据分析为用户提供价格评估、市场需求分析等服务,提高回收效率;③提供安全可靠的交易平台,确保交易的公平性和安全性;④推动二手市场的健康发展,为消费者提供经济实惠的产品选择;⑤增强公众的环保意识,推动社会向绿色、低碳方向发展。 其他说明:本文档不仅提供了系统的功能模块设计、数据库表结构、API接口规范,还展示了具体代码实现和GUI界面设计,为开发者提供了全面的技术参考。此外,项目强调了数据安全和隐私保护的重要性,确保平台在运行过程中能够有效保护用户信息。项目未来改进方向包括增强模型的精准度、拓展国际市场、提供更多支付和融资选项、跨平台数据集成与分析、更加智能的回收流程以及强化社交化与社区功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值