21.显式锁(Lock)的使用

2022/5/3 23:14:20

本文主要是介绍21.显式锁(Lock)的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


 

 

显式锁(Lock)的使用

 引言

在已经有了同步关键字synchronize的的情况下,Java依然在5.0版本中新增了一个同步锁对象lock.又称显示锁,之锁以新增它,是因为synchronize有一些不足,究竟synchronize有哪些不足?在后续课程synchronize与lock的区别,一节中详细介绍,本节主要是来介绍显示锁lock及使用,为什么叫显示锁?是因为我们可以手动的去获取锁与释放锁。之前使用synchronize的的时候,则是自动获取锁与释放锁,锁以synchronize的被称之为隐式锁,lock锁被称之为显示锁。

本节主要是来介绍和使用lock。首先来看第一点,什么是lock?它具备和synchronize的一样的作用,也可以实现线程同步,但是它比synchronize更强大,强大之处在于它更灵活,它可以自由的获取锁与释放锁。再来谈谈lock,本身它是一个接口,里面定义了一些和锁相关的操作,一共有6个方法,

 

 

将这六个方法按功能分类的话,可以分为获取锁、释放数和中段阻塞的线程,以及条件(condition),condition专门用于线程等待和唤醒线程。

 

 

本节主要介绍的是lock方法和unlock方法。这里列举了三个常用的lock子类。分别是可重入锁reentrantlock和读锁readlock以及写锁writelock。 

 

 

下面就以reentrantlock为例来使用lock锁,使用lock方法就可以获取同步锁,

 

 

使用unlook方法就可以释放同步锁。

 

 

自定义一个任务。在任务中首先初始化一个look锁,new一个reentrantlock对象,然后使用lock方法获取锁之后,将我们要同步的内容写的lock与unlock之间。例如这里我们使当前线程休眠一秒钟,一秒钟之后输出当前线程名称,最后使用unlock方法释放锁,

 

 

下面我们来执行该任务,首先将任务创建出来,然后创建两个线程,接着将任务传递给线程,最后启动线程,

 

 

从执行结果来看,前后间隔一秒钟输出线程名称,说明lock锁具备同步作用。 

 

 

总结

最后来总结一下本节的内容,本节介绍显示锁lock,它具备和synchronize一样的作用,可以实现线程同步,但是它比synchronize更强大,其中一个强大之处啊就是灵活,它可以自由的获取锁和释放锁。对应这两个操作的方法分别是lock和unlock,lock用于获取锁,unlock用于释放锁,在实际开发中越来越多的人选择使用lock锁,它不是用来替代synchronize的,而是来弥补synchronize的不足。 

 

 


  

附录:

笔记完整文本:

在已经有了同步关键字centralize的的情况下,Java依然在5.0版本中新增了一个同步锁对象。Knock又称显示锁,之锁以新增,它是因为synchronize有一些不足,究竟生克赖子的有哪些不足?在后续课程三个less的与look的区别,一节中详细介绍,本节主要是来介绍显示锁look及使用,为什么叫显示锁?是因为我们可以手动的去获取素与释放素之前使用synchronize的的时候则是自动获取锁与释放,锁锁以synchronize的被称之为影视锁,local锁被称之为显示锁。 本节主要是来介绍和使用look。首先来看第一点,什么是look?它具备和synchronize的一样的作用,也可以实现线程同步,但是它比生根赖子的更强大,强大之处在于它更灵活,它可以自由的获取锁释放锁再来谈谈look本身它是一个接口,里面定义了一些和锁相关的操作,一共有6个方法,将这那个方法按功能分类的话,可以分为获取数、释放数和中段阻塞的线程以及条件、condition、condition专门用于线程等待和唤醒线程。本节主要介绍的是look方法和Outlook方法。这里列举了三个常用的look子类分别是可重入锁re出来的locker和读锁window look以及写锁right look。 下面就以rain tried locker为例来使用look锁,使用locker方法就可以获取同步锁,使用on look方法就可以释放同步锁制定一个任务。在任务中首先初始化一个look锁又一个瑞恩出来的look对象,然后使用look方法获取锁之后将我们要同步的内容写的look与unlock之间。例如这里我们使当前线程休眠一秒钟,一秒钟之后输出当前线程名称,最后使用unlock方法释放速,下面我们来执行该任务,首先将任务创建出来,然后创建两个线程,接着将任务传递给现场,最后启动线程,从执行结果来看,前后间隔一秒钟输出线程名称,说明洛克锁具备同步作用。 最后来总结一下本节的内容,本节介绍前10首look它具备和super lights的一样的作用,可以实现线程头部,但是它比circulate的更强大,其中一个强大之处啊就是灵活,它可以自由的过去做与释放锁对应,这两个操作的方法分别是look和unlock,locker用于获取数,unlock用于释放素,在实际开发中越来越多的人选择使用洛克斯洛克索,它不是用来替代synchronize的,而是来弥补生根赖子的不足。

 



这篇关于21.显式锁(Lock)的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程