LinkedBlockingQueue重新赋值

Jacky-止涯 2014-11-26 10:27:40
我在看JDK1.7的LinkedBlockingQueue的时候,发现他很多方法里面,都会把count 和lock重新创建一个引用(如下代码)。
为什么呢?本来就已经是final的了,为什么要重新new一个引用,这里如果不这么做的话,会有什么影响嘛?
求大虾们指导


private final AtomicInteger count = new AtomicInteger(0);
private final ReentrantLock takeLock = new ReentrantLock();
public E poll() {
final AtomicInteger count = this.count;
if (count.get() == 0)
return null;
E x = null;
int c = -1;
final ReentrantLock takeLock = this.takeLock;
takeLock.lock();
try {
if (count.get() > 0) {
x = dequeue();
c = count.getAndDecrement();
if (c > 1)
notEmpty.signal();
}
} finally {
takeLock.unlock();
}
if (c == capacity)
signalNotFull();
return x;
}
...全文
267 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jacky-止涯 2014-11-27
  • 打赏
  • 举报
回复
怎么沙发都没有,自己踩一下!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧