浅析Java中的同步和互斥锁

原创 ゞ 浴缸里的玫瑰 2024-12-12 16:42 73阅读 0赞

在Java中,同步和互斥锁是用于管理多个线程对共享资源访问的一种机制。

  1. 同步锁(Synchronized):
    同步锁是一种独占锁,即在同一时刻只有一个线程可以使用该锁保护的代码块。例如:
  1. public class Counter {
  2. private int count = 0;
  3. public synchronized void increment() {
  4. count++;
  5. }
  6. public synchronized int decrement() {
  7. if (count <= 0) throw new IllegalArgumentException("Counter underflow");
  8. count--;
  9. return count;
  10. }
  11. }
  1. 互斥锁(Lock):
    Java 14引入了java.util.concurrent.locks.Lock接口,提供了更细粒度的锁管理。例如:
  1. import java.util.concurrent.locks.Lock;
  2. import java.util.concurrent.locks.ReentrantLock;
  3. public class ExclusiveResource {
  4. private Lock lock = new ReentrantLock();
  5. public void useExclusiveResource() throws InterruptedException {
  6. lock.lock(); // 获取锁
  7. try {
  8. // 执行独占资源操作
  9. System.out.println("Using exclusive resource...");
  10. // 如果需要,可以延时释放锁
  11. Thread.sleep(500);
  12. } finally {
  13. // 无论是否发生异常,都需要释放锁
  14. lock.unlock(); // 释放锁
  15. }
  16. }
  17. }

总结,同步锁(Synchronized)是Java语言提供的原生同步机制,而互斥锁(Lock)则是基于java.util.concurrent.locks库的更细粒度的锁控制。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,73人围观)

还没有评论,来说两句吧...

相关阅读