制作一个网站需要多少费用,做兼职比较正规的网站,项目网络计划软件教程,广告公司广告语简洁一、线程安全活跃态问题 线程因为某件事情得不到执行 1、活锁 线程没有阻塞#xff0c;但一直重复执行某个操作#xff0c;并且失败重试 1#xff09;例子
在消息队列中#xff0c;消费者没有正确ack消息#xff0c;并且执行过程中报错了#xff0c;消息会被重复执行但一直重复执行某个操作并且失败重试 1例子
在消息队列中消费者没有正确ack消息并且执行过程中报错了消息会被重复执行一直失败并重试for循环忘记break递归忘记写结束条件
2解决方案
等待随机时间按照时间轮去重试到达一定时间退出重试
2、 饥饿 线程因为无法访问所需资源而一直在等待 1两种情况
线程优先级问题不合理分配导致部分线程始终无法获得CPU资源而一直无法执行 例如,读写锁读优先会造成饥饿写一直在等一些线程在临界区无限循坏等待资源让其他线程一直拿不到锁进去临界区进入了饥饿状态
2解决方案
保证资源充足但很多场景下资源稀缺无法解决公平分配资源使用公平锁FIFO策略避免持有锁的线程长时间执行
3、死锁 多个线程互相等待对方释放锁的过程 二、竞态条件 多个线程同时访问相同资源如果对资源的访问顺序敏感就称存在竞态条件 最常见的情况
先检查后执行检查值的状态根据这个状态去更新但期间可能被其它线程修改导致执行结果出现各种问题延迟初始化单例