摘要: 题目 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己 阅读全文
posted @ 2022-01-19 23:29 Kisen 阅读(97) 评论(0) 推荐(0)
摘要: 原子性 即一个或多个操作要么不执行,要么就全部执行完毕,不会被其他因素打断。类似于数据库的事务。 因此可以通过锁、synchronized来确保。volatile是无法保证复合操作的原子性。 可见性 当多个线程共享一个变量时,若其中一个线程改变变量的值,其他线程立即就能够看到,即为可见性。 Java 阅读全文
posted @ 2022-01-19 20:13 Kisen 阅读(177) 评论(0) 推荐(0)
摘要: 问:有何区别? 标答:第一种方法会产生大量中间值(脏数据),原子性完全被破坏,可能导致引用不正确。 第二种方法虽然也会产生中间值,但是只有0一个初始值(脏数据),因此虽然不具有原子性,但是第二种方法仍然比第一种好得多。 阅读全文
posted @ 2022-01-19 19:55 Kisen 阅读(36) 评论(0) 推荐(0)