怎么使用synchronized
时间: 2024-10-12 17:02:07 浏览: 14
Java使用synchronized修饰方法来同步线程的实例演示
5星 · 资源好评率100%
`synchronized`关键字在Java中用于控制线程对共享资源的访问,防止多个线程同时修改同一数据导致的数据不一致。它主要有两个作用:
1. **同步方法**:当你在一个方法前加上`synchronized`,那么这个方法就会变成一个独占锁,一次只有一个线程能进入该方法。例如:
```java
public synchronized void doSomething() {
// 只有这行代码会被一个线程执行
}
```
2. **同步块**:可以指定同步特定的代码块而不是整个方法,通过`synchronized (lockObject)`来实现。`lockObject`通常是`this`、静态变量或其他对象实例,如:
```java
public void processList(List items) {
synchronized (items) { // 确保列表操作是线程安全的
for (Item item : items) {
// 操作item...
}
}
}
```
在这个例子中,只有持有`items`对象锁的线程才能执行`processList`中的代码。
**注意事项**:
- `synchronized`不会阻止其他线程继续执行,只会阻止他们获取相同的锁。
- 如果多个对象共享相同的锁,那么它们之间会互相阻塞,需要谨慎设计避免死锁。
阅读全文