第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

synchronized和Lock

標(biāo)簽:
Java
  1. synchronized是关键字Lock是一个类。

  2. synchronized是个全自动会自动释放锁 Lock是手动的 。

  3. synchronized无法判断获取锁的状态Lock可以判断。

  4. synchronized 线程1 (获得锁, 阻塞了) 线程2 (等待, 一直等) Lock锁就不一定会一直等下去
    会有locak.tryLock() 尝试获取锁。

  5. synchronized 可重入锁,不可中断 , 非公平 ; Lock 可重入锁,可以判断锁, 默认非公平(可以自己设置)。

  6. synchronized 适合锁少量的同步代码, Lock适合锁大量的同步代码。

  7. synchronized 可以锁代码块和方法, Lock只能锁代码块。

  8. 使用Lock锁JVM将花费较少的时间来调度线程,性能更好, 并且可扩展性好 有更多的子类。

Lock分为三部分

  1. ReentrantLock() 可重入锁
  2. ReentrantReadWriteLock.ReadLock() 读锁
  3. ReentrantReadWriteLock.WriteLock() 写锁
    public ReentrantLock() {
        sync = new NonfairSync();
    }

    /**
     * Creates an instance of {@code ReentrantLock} with the
     * given fairness policy.
     *
     * @param fair {@code true} if this lock should use a fair ordering policy
     */
    public ReentrantLock(boolean fair) {
        sync = fair ? new FairSync() : new NonfairSync();
    }

这里是可重入锁 ReentrantLock() 的源码

不传参数的时候默认是非公平锁=============》不按顺序来的 可插队
传参是true时候是公平锁,false时候是非公平锁 =========》 完全按照顺序执行 存在3s的进程等到3h的进程

写法上区别

synchronized

/**
 * 注释
 *
 * @author sunhao
 * @Date 2021-08-23-21:11
 */
public class Test01 {

    public static void main(String[] args) {
        Book book = new Book();

        new Thread(() -> { for (int i = 0; i < 60; i++) book.sell(); }, "A").start();
        new Thread(() -> { for (int i = 0; i < 60; i++) book.sell(); }, "B").start();
        new Thread(() -> { for (int i = 0; i < 60; i++) book.sell(); }, "C").start();
    }
}


class Book{
    int num = 60;
    public synchronized void sell(){
        if (num > 0)
        System.out.println(Thread.currentThread().getName()+"卖出了第" + (num--)+ "本剩余" + num + "本");
    }

//    Lock lock = new ReentrantLock();
//    public void sell(){
//        lock.lock();
//        try {
//            if (num > 0)
//                System.out.println(Thread.currentThread().getName()+"卖出了第" + (num--)+ "本剩余" + num + "本");
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            lock.unlock();
//        }
//    }

}

new ReentrantLock();

Lock分为三部曲
1.new ReentrantLock();
2.lock.lock();
3.try-catch-finally=>lock.unlock();

/**
 * 注释
 *
 * @author sunhao
 * @Date 2021-08-23-21:11
 */
public class Test01 {

    public static void main(String[] args) {
        Book book = new Book();

        new Thread(() -> { for (int i = 0; i < 60; i++) book.sell(); }, "A").start();
        new Thread(() -> { for (int i = 0; i < 60; i++) book.sell(); }, "B").start();
        new Thread(() -> { for (int i = 0; i < 60; i++) book.sell(); }, "C").start();
    }
}


class Book{
    int num = 60;
//    public synchronized void sell(){
//        if (num > 0)
//        System.out.println(Thread.currentThread().getName()+"卖出了第" + (num--)+ "本剩余" + num + "本");
//    }

    Lock lock = new ReentrantLock();
    public void sell(){
        lock.lock();
        try {
            if (num > 0)
                System.out.println(Thread.currentThread().getName()+"卖出了第" + (num--)+ "本剩余" + num + "本");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            lock.unlock();
        }
    }

}

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消