java使用线程锁
时间: 2023-08-30 22:06:11 浏览: 119
在 Java 中,使用线程锁可以避免多个线程同时修改共享资源时出现的并发问题。Java 中提供了多种锁机制,其中最常用的是 synchronized 关键字和 ReentrantLock 类。
使用 synchronized 关键字可以将一段代码或方法标记为同步代码块,这样在同一时刻只有一个线程可以执行该代码块。示例代码如下:
```
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
```
在这个示例中,increment() 和 getCount() 方法都被标记为 synchronized,这意味着任何时候只有一个线程可以执行这些方法。这样可以确保 count 变量的值不会被多个线程同时修改。
另外,Java 还提供了 ReentrantLock 类,它实现了 Lock 接口,提供了更灵活的锁机制。使用 ReentrantLock 时,需要手动获取锁和释放锁,示例代码如下:
```
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Counter {
private int count = 0;
private Lock lock = new ReentrantLock();
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
public int getCount() {
lock.lock();
try {
return count;
} finally {
lock.unlock();
}
}
}
```
在这个示例中,increment() 和 getCount() 方法分别使用了 lock.lock() 和 lock.unlock() 方法获取和释放锁。和 synchronized 关键字不同,使用 ReentrantLock 可以更灵活地控制锁的获取和释放,但需要更多的代码来处理锁的逻辑。
阅读全文
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)