【发布时间】:2013-01-25 11:28:23
【问题描述】:
假设我有以下代码块:
int version;
String content;
synchronized (foo) {
version = foo.getVersion();
content = foo.getContent();
}
// Do something with version and content
其目的是获取某个对象 foo 的版本和内容的线程安全一致视图。
有没有办法写得更简洁,看起来更像这样?
synchronized (foo) {
int version = foo.getVersion();
String content = foo.getContent();
}
// Do something with version and content
问题在于,在这个版本中,变量是在(同步的)花括号范围内定义的,因此不能在块外访问。所以,问题是:有没有办法将这些花括号标记为不定义新的范围块或将变量标记为属于父范围而不必在那里声明它们?
(注意:我不想简单地将// Do something with version and content 拉到同步块中。)
【问题讨论】:
标签: java scope curly-braces