我是靠谱客的博主 羞涩蜻蜓,最近开发中收集的这篇文章主要介绍Lock锁与Synchronized锁的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Synchronzied属于我们java中内置关键字,底层jdk帮我们封装好了,lock是基于aqs封装的锁。

Synchronzied可以理解为自动挡,当代码运行完毕,或者程序抛出异常的情况下才会释放锁。

Lock:可以完全人为控制获取锁,释放锁,扩展性非常高。

代码演示Lock锁:

我们来写一个卖票的程序:

public class TestDemo implements Runnable {

    //定义100张票
    private static int count = 100;
    //定义一个lock锁
    private Lock lock = new ReentrantLock();

    @Override
    public void run() {
        //票数大于零,才让做卖票操作
        while (count > 0) {
            manuaTicketing();
        }

    }


    private void manuaTicketing() {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        try {
            //获取锁
            lock.lock();
            if (count > 0) {
                System.out.println(Thread.currentThread().getName() + "卖出了第" + (100 - count+1) + "张票");
                count--;
            }else{
                System.out.println("票都卖完啦!!!");
            }

        }catch (Exception e){

        } finally {
            //释放锁
           lock.unlock();
        }
    }

    public static void main(String[] args) {
        //开几个窗口开始卖票
        TestDemo testDemo = new TestDemo();
        new Thread(testDemo).start();
        new Thread(testDemo).start();
    }
}

最后

以上就是羞涩蜻蜓为你收集整理的Lock锁与Synchronized锁的区别的全部内容,希望文章能够帮你解决Lock锁与Synchronized锁的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部