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)

解决方案

  1. 不在线程之间共享该状态
  2. 将状态变量修改为不可变的变量
  3. 在访问状态变量时使用同步

###一个无状态的Servlet###

//一个基于Servlet的因数分解服务
@ThreadSafe
public class StatelessFactorizer implement Servlet
{
	public void service(ServletRequest req,Ser)
}

...Page:14; pdf:28

##source##

  • 书籍:java并发编程实战(Brian Goetz)