synchronized示例
时间: 2024-07-22 18:00:46 浏览: 61
`synchronized`关键字在Java中用于同步代码块或方法,确保在同一时间只有一个线程能访问特定的资源或代码段。这是通过内部创建一个锁来实现的,可以防止多个线程并发修改共享数据导致的数据不一致。
**示例1:同步方法**
```java
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
```
在这个例子中,`increment()` 和 `getCount()` 都被`synchronized`修饰,保证了对`count`变量的原子操作,不会同时有多个线程修改它。
**示例2:同步代码块**
```java
public class SharedResource {
private int resource;
// 共享资源获取并处理
public void processResource(int id) {
synchronized (this) { // 锁定当前对象
if (id == 1) {
processTaskOne();
} else {
processTaskTwo();
}
}
}
private void processTaskOne() {
// 单线程处理任务一
}
private void processTaskTwo() {
// 单线程处理任务二
}
}
```
这里,`processResource`内部的同步代码块会锁定对象`this`,确保同一时刻只有一个线程执行这个代码块。
阅读全文