2015年10月27日

摘要: 在没有充分同步的程序中,如果调度器采用不恰当的方式来交替执行不同线程的操作,那么将导致不正确的结果。更糟的是,JMM还使得不同线程看到的操作执行顺序是不同的,从而导致在缺乏同步的发问下,要推断操作的执行顺序将变得更加复杂。各种使操作延迟或者看似乱序执行的不同原因,都可以归为重排序。JMM为程序中所有... 阅读全文
posted @ 2015-10-27 09:06 a0000 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 与基于锁的方案相比,非阻塞算法在设计和实现上都要复杂得多,但它们在可伸缩性和活跃性上却拥有巨大的优势。由于非阻塞算法可以使多个线程在竞争相同的数据时不会发生阻塞,因此它能在粒度更细的层次上进行协调,并且极大地减少调度开销。而且,在非阻塞算法中不存在死锁和其他活跃性问题。在基于锁的算法中,如果一个线程... 阅读全文
posted @ 2015-10-27 08:49 a0000 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 当使用条件等待时(例如Object.wait或Condition.await):通常都有一个条件谓词——包括一些对象状态的测试,线程在执行前必须首先通过这些测试。在调用wait之前测试条件谓词,并且从wait中返回时再次进行测试。在一个循环中调用wait。确保使用与条件队列相关的锁来保护构造条件谓词... 阅读全文
posted @ 2015-10-27 08:30 a0000 阅读(213) 评论(0) 推荐(0) 编辑

导航