只是想知道以下执行相同功能的代码有何不同
代码 1:
class ReadWriteCounter {
ReadWriteLock lock = new ReentrantReadWriteLock();
private Integer count = 0;
public Integer incrementAndGetCount() {
lock.writeLock().lock();
try {
count = count + 1;
return count;
} finally {
lock.writeLock().unlock();
}
}
public Integer getCount() {
lock.readLock().lock();
try {
return count;
} finally {
lock.readLock().unlock();
}
}
}
代码 2:
class ReadWriteCounter {
private Integer count = 0;
public getCount()
{
synchronized(count){
return count;
}
}
public void setCount(Integer i)
{
synchronized(count){
count = i;
}
}
}
其目的是确保在修改计数时没有其他线程访问它以进行读取,并且在读取时,其他线程都不应访问它以进行写入。哪个是最佳解决方案,为什么?另外,我将在一个类中使用它,其中有需要编辑的字段变量。请提供您的建议。
心有法竹
蝴蝶刀刀
相关分类