concurrencyJava - juedaiyuer/researchNote GitHub Wiki
#java并发笔记#
##安全性问题##
@NotThreadSafe
public class UnsafeSequence
{
private int value;
public int getNext()
{
return value++;
}
}
线程安全性标注
该类是一种常见的并发安全问题,成为竞态条件(race condition)
由于多个线程要共享相同的内存地址空间,并且是并发运行,因此它们可能会访问或修改其他线程正在使用的变量
线程安全的数值序列生成器
@ThreadSafe
public class Sequence
{
//该标注说明了Sequence的同步策略
@GuardedBy("this") private int value;
public synchronized int getNext()
{
return value++;
}
}
##线程安全性##
如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误(Page:12)
解决方案
- 不在线程之间共享该状态
- 将状态变量修改为不可变的变量
- 在访问状态变量时使用同步
###一个无状态的Servlet###
//一个基于Servlet的因数分解服务
@ThreadSafe
public class StatelessFactorizer implement Servlet
{
public void service(ServletRequest req,Ser)
}
...Page:14; pdf:28
##source##
- 书籍:java并发编程实战(Brian Goetz)