老师, 请教一个有关InterruptedException的问题

来源:5-4 线程不安全类与写法-1

伟少_will

2018-09-29

老师, 以下是我的业务代码

for (Long houseId: houseIds) {
    //线程处理
    executorService.execute(() -> {
        //一些查询操作
        xxxService.select();
        //一些更新缓存的操作
        xxxRedis.update();
        if(如果不需要保存){
		    //停止线程
	        Thread.currentThread().interrup();
        }
        //一些添加操作
        xxxService.batchInsert();
        
    }

老师, 诚心请教一下
简化了很多业务代码, 只写出核心的
更新缓存的这一部, 没有任何问题(例如houseIds有1000个,1000个都更新到缓存了)
但是程序却会不断抛出InterruptedException
线程不是在wait, join, sleep时候被interrupt才会抛出这个异常吗

写回答

2回答

Jimin

2018-09-29

你好,实际中很少有直接调用interrupt的,你如果想结束线程,直接return就可以了啊,你目前使用的是线程池,你很难知道其他线程是什么状态,完全交给线程池调度就可以了。

1
0

伟少_will

提问者

2018-09-29

非常感谢老师

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程