假设我有下面的代码段多线程与线程占先同步
public synchronized void method()
{
if(something == null)
{
something = new SomeThing();
}
//do something
}
现在,在多线程环境中假设,一个线程[线程1]进入方法,它执行后只是抢占new Something();
但然后才能将其分配给something
。然后另一个线程[线程2]也尝试调用该方法。现在究竟发生了什么?线程1获得的锁定会发生什么?线程1的步骤是否会回滚?
同步不是一个事务,没有办法滚回来。如果在该块中删除了文件或发送了UDP数据报,您将如何回滚? – 2011-02-12 06:42:05