tet*_*eto 9 java concurrency multithreading
阅读这篇关于Java并发的DZone文章我想知道是否有以下代码:
private volatile List list;
private final Lock lock = new ReentrantLock();
public void update(List newList) {
ImmutableList l = new ImmutableList().addAll(newList);
lock.lock();
list = l;
lock.unlock();
}
public List get() {
return list;
}
Run Code Online (Sandbox Code Playgroud)
相当于:
private volatile List list;
public void update(List newList) {
ImmutableList l = new ImmutableList().addAll(newList);
list = l;
}
public List get() {
return list;
}
Run Code Online (Sandbox Code Playgroud)
为简洁起见,省略了try {} finally {}块.我假设ImmutableList类是一个真正不可变的数据结构,它拥有自己的数据,例如google-collections库中提供的数据.由于列表变量是易变的,基本上正在进行的是即时复制,只是跳过使用锁是不安全的?