java编写 实现一个线程安全的List
时间: 2024-06-15 14:05:56 浏览: 158
JAVA实现一个线程安全的循环单链表
在Java中,可以通过使用线程安全的List来确保多线程环境下的数据安全。Java提供了几种线程安全的List实现,其中最常用的是`CopyOnWriteArrayList`和`synchronizedList`。
1. `CopyOnWriteArrayList`:
`CopyOnWriteArrayList`是Java并发包中提供的线程安全的List实现。它通过在修改操作时创建一个新的底层数组来实现线程安全。这意味着读操作不会被阻塞,而写操作会复制整个底层数组,因此适用于读多写少的场景。
示例代码如下:
```java
import java.util.concurrent.CopyOnWriteArrayList;
public class ThreadSafeListExample {
private CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
public void addItem(String item) {
list.add(item);
}
public String getItem(int index) {
return list.get(index);
}
}
```
2. `synchronizedList`:
`synchronizedList`是通过`synchronized`关键字来实现线程安全的List。它使用内部锁来确保在同一时间只有一个线程可以修改List。这种方式适用于读写操作都比较频繁的场景。
示例代码如下:
```java
import java.util.Collections;
import java.util.List;
public class ThreadSafeListExample {
private List<String> list = Collections.synchronizedList(new ArrayList<>());
public void addItem(String item) {
list.add(item);
}
public String getItem(int index) {
return list.get(index);
}
}
```
阅读全文