JAVA线程停止的最佳实践(一)

本文探讨了JAVA线程停止的常见错误方法,如使用`stop()`和依赖`volatile`标志位,并详细解释了这些方法的不足之处。在错误方法的基础上,文章强调了如何使用`interrupt()`来实现线程的正确停止,以确保线程在停止前有机会进行必要的善后处理。通过示例展示了在生产者消费者模型中,如何避免因阻塞操作导致的线程无法停止问题。
摘要由CSDN通过智能技术生成
JAVA线程停止的最佳实践
1. 错误的停止方式:两种常见错误
2. 正确的停止方式:如何使用interrupt

开始容易,结束难。形容线程再合适不过了。关于线程停止这块,东西很多,众说纷纭,今天就来梳理下,线程停止的最佳实践。

错误的停止方式

首先简要了解下常见的错误停止方式,以及错在哪里。

这里的错误并不是绝对的错误。可能某些情况下,它依旧能够符合程序运行的期望,但并不能很好的处理所有情况。这里把健壮性不够的方法都归到错误的方法。

1. stop()

假设一个场景,开启一个子线程来模拟银行排队取钱,每个人都取1W元。流程是,柜员先把你银行卡的1W元划掉,然后分10次每次给你1000元。

		private static Runnable runnable = () -> {
   
        try {
   
            while (true) {
   
                System.out.println("从银行卡扣掉此人1W元");
                for (int j = 1; j < 11; j++) {
   
                    System.out.println("给了" + 1000 * j);
                    //等待印钞机印钱
                    Thread.sleep(10);
                }
            }
        } catch (InterruptedException e) {
   
            e.printStackTrace();
        }
    };

    public static void main
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值