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的,而是来弥补生根赖子的不足。
标签:同步,look,Lock,显式,synchronize,unlock,线程,lock,21 来源: https://www.cnblogs.com/cj8357475/p/16086058.html