java 子线程循环停止_在Java中停止循环线程

本文讨论了如何优雅地停止一个不断从队列读取的线程,提供了两种方案:一是使用原子条件变量实现自定义的`stopThisThread()`方法,二是通过向队列发送死亡事件。作者倾向于前者,但关心何时恰当地发出停止信号。
摘要由CSDN通过智能技术生成

我正在使用一个不断从队列中读取的线程.

就像是:

public void run() {

Object obj;

while(true) {

synchronized(objectsQueue) {

if(objectesQueue.isEmpty()) {

try {

objectesQueue.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

obj = objectesQueue.poll();

}

}

// Do something with the Object obj

}

}

停止此线程的最佳方法是什么?

我看到两个选择:

1 – 由于不推荐使用Thread.stop(),我可以实现一个使用n原子检查条件变量的stopThisThread()方法.

2 – 将死亡事件对象或类似内容发送到队列.当线程获取死亡事件时,它将退出.

我更喜欢第一种方式,但是,我不知道何时调用stopThisThread()方法,因为它可能在队列的路上,并且停止信号可以首先到达(不可取).

有什么建议?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值