【发布时间】:2012-04-28 20:56:41
【问题描述】:
如果同步方法抛出异常,在抛出之前在其中进行的成员写入对其他线程是否可见?例如
class Foo
{
private int x;
public synchronized void foo()
{
x++;
// some other code using x that throws RTE for a specific thread
}
}
如果 Foo 的对象在线程 t1 和 t2 之间共享,并且 t1 抛出异常,在这种情况下,x 的最新值将被刷新到主内存,以便在 t2 进入 foo 时对其可见对象?
【问题讨论】:
-
我假设您打算同步您的
foo方法? -
@Jon Skeet 哎呀!做出改变。谢谢。
-
如果维护一个堆栈来存储你的方法的使用信息,那么下次当任何其他线程要执行时,它可以检索上次发生的信息。
标签: java synchronization