ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

21.显式锁(Lock)的使用

2022-05-03 22:04:19  阅读:186  来源: 互联网

标签:同步 look Lock 显式 synchronize unlock 线程 lock 21



 

 

显式锁(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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有