首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Race condition-Java Concurrency In Practice C02读书笔记

2012-09-12 
Race condition--Java Concurrency In Practice C02读书笔记[本文是我对Java Concurrency In Practice第二

Race condition--Java Concurrency In Practice C02读书笔记

[本文是我对Java Concurrency In Practice第二章的归纳和总结,??转载请注明作者和出处,??如有谬误, 欢迎在评论中指正.?]

?

多线程环境下,无需调用方进行任何同步处理也能保证正确性的类是线程安全的类

?

无状态的对象是线程安全的。无状态是指没有成员变量。由于方法的局部变量都是在线程私有的栈中分配的,因此在一个线程中调用无状态对象的方法,不会影响到其他线程。

?

race condition: 正确性依赖于事件发生的相对时间。

check-and-act是race condition中的一种,指的是基于check的结果进行操作。由于check和act并非是原子的,进行act时check的结果可能已经无效,那么基于check所进行的act就可能带来问题。

见如下的lazy单例类:

public class Widget {public synchronized void doSomething() {...}}public class LoggingWidget extends Widget {public synchronized void doSomething() {System.out.println(toString() + ": calling doSomething");super.doSomething();}}
?如果java中的锁不是可重入的,那么调用LoggingWidget对象的doSomething方法就会导致死锁。

?

热点排行