Java小技巧:利用异常中断当前任务

Java小技巧:利用异常中断当前任务

在日常开发中,我们经常遇到调用别人的代码来完成某个任务,但是当代码比较耗时的时候,没法从外部终止该任务。有些程序从开始就考虑到了这个场景,就会提供对应的cancelstop之类的方法用于终止任务,但还是会有很多三方库并没有提供响应接口。比如,下面这个下载示例:

class DownloadTask { public void download(Listener listener) { try { for (int i = 0; i < 100; i++) {//模拟下载过程 Thread.sleep(1000); listener.onProgressUpdated(i + 1); } listener.onCompleted(); } catch (InterruptedException e) { throw new RuntimeException(e); } } public interface Listener { void onProgressUpdated(int progress); void onCompleted(); } } public class Main { public static void main(String[] args) throws InterruptedException { DownloadTask task = new DownloadTask(); task.download(new DownloadTask.Listener() { @Override public void onProgressUpdated(int progress) { System.out.println("onProgressUpdated: " + progress); if (isInterrupted.get()) { throw new EndException();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值