考虑并发场景下,读取数据判断是否为空然后插入数据的场景的代码
时间: 2023-05-20 08:02:03 浏览: 57
在并发场景下,读取数据判断是否为空然后插入数据的场景的代码可以使用以下方式实现:
```
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class ConcurrentDataAccess {
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private final List<String> dataList = new ArrayList<>();
public void insertData(String data) {
lock.writeLock().lock();
try {
if (!dataList.contains(data)) {
dataList.add(data);
}
} finally {
lock.writeLock().unlock();
}
}
public boolean isDataEmpty() {
lock.readLock().lock();
try {
return dataList.isEmpty();
} finally {
lock.readLock().unlock();
}
}
}
```
在上述代码中,我们使用了 `ReentrantReadWriteLock` 来实现读写锁,确保在并发场景下读取数据和插入数据的线程安全。在插入数据时,我们首先获取写锁,然后判断数据是否已经存在,如果不存在则插入数据。在判断数据是否为空时,我们获取读锁,然后直接返回数据列表是否为空的结果。
注意:上述代码只是示例,实际场景中需要根据具体需求进行调整和优化。