【发布时间】:2011-02-12 05:09:05
【问题描述】:
假设我有以下代码
public synchronized void method()
{
if(something == null)
{
something = new SomeThing();
}
//do something
}
现在假设在多线程环境中,一个线程 [Thread 1] 进入该方法并在它执行 new Something(); 之后但在它能够将其分配给 something 之前被抢占。然后另一个线程 [Thread 2] 也尝试调用该方法。现在究竟发生了什么?线程 1 获得的锁会发生什么?线程 1 的步骤会回滚吗?
【问题讨论】:
-
同步不像事务,没有办法回滚。如果在该块中删除了文件或发送了 UDP 数据报,您将如何回滚?
标签: java multithreading synchronization