java线程被中断
发布时间: 2022-12-15 22:13:46
① java线程哪些情况会中断
涉及到数据共享及数据的修改的情况下一般要考虑线程安全,比如有一个原始数据5,我在一个线程中要将这个数据加5,那么我就在这个线程中读取到这个数据然后加5得到10,然后再把10存入这个原始数据中,因为没有考虑线程安全,在我存入之前,有另一个线程修改了这个数据,把原始数据修改为0,然后之前的线程又才将10存入那个原始数据,那么此时这个原始数据就成为了10,然后因为之前有线程修改过,实际应该为5,这里只是数字,如果这个数字是钱呢?你的账户就会凭空多出钱来!还有很多种出错的情况,这里只是其中一种,所以在某些情况下必须要考虑线程安全性
② Java中如何中断线程
1: 给你的线程类一个标识符,然后在循环中对这个标志做判断,如果为false则跳出循环,自动结束线程(线程在run()里面执行完就自动关闭了),而你可以再线程外对这个标识符做控制。2: 对线程对象调用interrupt(),这样在run中使用sleep,wait等方法时自动抛出一个InterruptedException异常,在catch里面可以跳出循环。
③ Java线程中断机制是怎么回事
线程阻塞:一般通过下面方法实现
Sleep:睡眠 中间参数毫秒 自然醒 睡眠过程交出CPU控制权且一定不被执行 占有对象锁
Yield:终止 终止后交出CPU控制权 重新进入就绪状态,下一次有可能被再一次调用
Join:终止上一级线程 使当前线程运行完后再执行上一级线程
Wait:线程等待 必须放入synchronized块中 等待时,交出cpu控制权,释放对象锁,等待唤醒后重新拥有对象锁
Synchronized:加锁同步 逻辑错误下会导致死锁阻塞 一般有业务关联情况下的对象避免有锁中锁
热点内容