同一个Lock锁两次,性能比较差# Java - 爪哇娇娃
u*l
1 楼
读别人的代码,发现有一个地方同一个Lock被锁了两次:
调用的Method:
while (.....) {
Reader reader = (Reader) readers.next();
synchronized (reader) {
if (reader.getCount() > 0) {
do sth
}
}
}
Reader 的定义:
public synchronized int getCount() {
return count;
}
可以看到,reader object 被锁了两次。
既然Synchronized block已经锁了reader object, 里面应该可以调用一个非同步的
getCount(). 性能会提高很多。
也就是说,添加一个:
public int getCountRegular() {
return count;
}
这样做值得吗?
调用的Method:
while (.....) {
Reader reader = (Reader) readers.next();
synchronized (reader) {
if (reader.getCount() > 0) {
do sth
}
}
}
Reader 的定义:
public synchronized int getCount() {
return count;
}
可以看到,reader object 被锁了两次。
既然Synchronized block已经锁了reader object, 里面应该可以调用一个非同步的
getCount(). 性能会提高很多。
也就是说,添加一个:
public int getCountRegular() {
return count;
}
这样做值得吗?