java独占锁和共享锁的例子
时间: 2023-05-19 11:02:51 浏览: 71
Java中的独占锁和共享锁是通过synchronized关键字实现的。独占锁是指在同一时刻只能有一个线程访问共享资源,其他线程必须等待,直到独占锁被释放。共享锁是指多个线程可以同时访问共享资源,但是不能修改共享资源,只能读取。
下面是一个独占锁的例子:
```
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
```
在这个例子中,increment()和getCount()方法都是synchronized的,这意味着在同一时刻只能有一个线程访问这些方法。如果一个线程正在执行increment()方法,其他线程必须等待,直到独占锁被释放。
下面是一个共享锁的例子:
```
public class ReaderWriter {
private List<String> data = new ArrayList<>();
public synchronized void write(String str) {
data.add(str);
}
public synchronized List<String> read() {
return Collections.unmodifiableList(data);
}
}
```
在这个例子中,write()方法和read()方法都是synchronized的,这意味着在同一时刻只能有一个线程访问这些方法。但是,多个线程可以同时访问read()方法,因为它只是读取共享资源,而不是修改它。