活锁的好例子?
我理解livelock是什么,但我想知道是否有人有一个很好的基于代码的例子呢?而基于代码的,我并不是说“两个人试图在走廊里相互过去”。如果我再读一遍,我会失去午餐。
没有找到相关结果
已邀请:
10 个回复
誓猎贰
抢垢洛韧
除了竞争条件之外,我们在这里所遇到的情况是,如果两个线程同时进入,则最终将在内循环中运行而不继续。显然这是一个简化的例子。一个明确的解决方案是在线程等待的时间内放置某种随机性。 正确的解决方法是始终尊重锁定层次结构。选择您获得锁定的订单并坚持下去。例如,如果两个线程总是在lock2之前获取lock1,则不存在死锁的可能性。
吞睫素
IngredientContainer.java
一切都运行良好,直到填料填充容器。但是如果我忘记启动填充物,或填充物意外离开,子线程会不断改变状态以允许其他制造商去检查容器。 我还创建了一个守护进程ThreadTracer,它可以监视线程状态和死锁。这是控制台的输出;
你会注意到子线程并改变它们的状态并等待。
羔磺
峨躬坎抬焚
屠创氓读叔
我可以想象这样的代码会有问题,因为你有很多线程冲突并等待获取一组锁。但我不确定这对我来说是一个简单的例子。
曝匿弄罚
磐乓铝举
梦砍废么
街茬