【发布时间】:2013-01-05 06:15:45
【问题描述】:
我在看Java源码,遇到两个小问题。不知道Sun为什么要写这样的代码,这里有问题(JDK版本:1.6):
问题 1:
java.util.concurrent.PriorityBlockingQueue#offer(E e):
public boolean offer(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
boolean ok = q.offer(e);
assert ok;
notEmpty.signal();
return true;
} finally {
lock.unlock();
}
}
为什么要在方法块中定义一个局部final ReentrantLock变量,为什么不直接使用全局变量lock?
问题 2:
此方法java.text.NumberFormat#getInstance(Locale desiredLocale, int choice): 创建一个DecimalFormat 对象,但返回类型为NumberFormat。为什么不将返回类型设为DecimalFormat?
【问题讨论】:
-
你可能想把它分成两个完全独立的问题,因为它们是不相关的
-
@DWright:是的,我以后会做这个,谢谢你的推荐
-
API 就是这样。除非你能找到写它的人,否则问为什么是毫无意义的。 #1 对我来说似乎完全没有意义,除非它与内存模型规则有关。关于 #2,请注意所有
getInstance()方法都返回NumberFormat,而不仅仅是那个。
标签: java number-formatting jdk1.6 blockingqueue