美文网首页
Lock锁 与 synchronized 比较

Lock锁 与 synchronized 比较

作者: 何几时 | 来源:发表于2020-11-30 21:17 被阅读0次

Lock

定义:更强大的线程同步机制--显式定义同步锁对象来实现同步

特点:

  1. 在JUC(java.util.concurrent)包里
  2. ReentrantLock 实现了 Lock,和 synchronized 有相同的作用

synchronizedLock 的对比

  • Lock 是显式锁,synchronized 是隐式锁
  • Lock只有代码块锁,而 synchronized 有代码块锁和方法锁
  • Lock锁会让JVM花较少的时间调度线程,性能更好,子类多扩展性好
  • 优先顺序 Lock > synchronized (obj) {...} > synchronized func()

使用方法

class A implements Runnable{
    private void m() {
        try{
            lock.lock();  // 上锁
                          // 实际工作的代码    
        } finally {
            lock.unlock();  // 防止忘了关锁!!!
        }
    }
}

示例代码,抢票程序

package demo04_synchronized;

import java.util.concurrent.locks.ReentrantLock;

// 测试Lock锁
public class TestLock {
    public static void main(String[] args) {
        TestLock2 testLock2 = new TestLock2();

        new Thread(testLock2, "01").start();
        new Thread(testLock2, "02").start();
        new Thread(testLock2, "03").start();
    }
}

class TestLock2 implements Runnable{
    private int ticketNum = 10;

    // 定义Lock锁
    private final ReentrantLock lock = new ReentrantLock();


    @Override
    public void run() {
        while (true) {
            try {
                lock.lock(); // 加锁
                if (ticketNum<=0) {
                    break;
                } else {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()
                            +"抢到了第"+ticketNum--+"张票");
                }
            } finally {
                lock.unlock();
            }

        }
    }
}

相关文章

  • synchronized与lock的区别

    使用synchronized将会隐式地获取锁,而lock会显示的获取与释放锁。synchronized与lock在...

  • Lock锁 与 synchronized 比较

    Lock 定义:更强大的线程同步机制--显式定义同步锁对象来实现同步 特点: 在JUC(java.util.con...

  • 显式锁和AQS

    显式锁 Lock接口和核心方法 Lock接口和synchronized的比较 synchronized代码简洁,L...

  • 6.数据库

    Android数据库ORM框架用法、源码和性能比较分析 synchronized与lock 对象锁、互斥锁、共享锁...

  • Lock锁

    synchronized 锁和 Lock 锁的区别 Lock 锁,Java类,synchronized,关键字。s...

  • 25.Condition

    1.与Lock的关系 Condition在同步锁synchronized中用的比较多。Condition本身也是一...

  • Java性能 -- CAS乐观锁

    synchronized / Lock / CAS synchronized和Lock实现的同步锁机制,都属于悲观...

  • Java中的锁——Lock和synchronized

    一、Lock接口 1、Lock接口和synchronized内置锁 a)synchronized:Java提供的内...

  • 并发编程系列之Lock锁可重入性与公平性

    一、相似之处:Lock锁 vs Synchronized 代码块 Lock锁是一种类似于synchronized ...

  • 2.concurrent

    1.Lock 锁synchronized修饰跟lock效果一样 2.读写锁分读锁和写锁 多个读锁不互斥,对锁与血锁...

网友评论

      本文标题:Lock锁 与 synchronized 比较

      本文链接:https://www.haomeiwen.com/subject/pbmdwktx.html