首页 > 编程语言 >Java多线程____JUC并发锁机制

Java多线程____JUC并发锁机制

时间:2023-09-13 12:33:21浏览次数:42  
标签:JUC 同步 Java ReentrantLock 获取 线程 公平 机制 多线程


1.同步锁

即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。同步锁的原理是,对于每一个对象 ,有且仅有一个同步锁;不同的线程能共同访问该同步锁

但是,在同一个时间点,该同步锁能且只能被一个线程获取到。这样,获取到同步锁的线程就能进行CPU调度 ,从而在CPU上执行;而没有获取到同步锁的线程,必须进行等 待,直到获取到同步锁之后才能继续运行。这 就是,多线程通过同步锁进行同步的原理!

2.Lock接口

JUC包中的 Lock 接口支持那些语义不同(重入、公平等)的锁规则。所谓语义不同,是指锁可是有"公平机制的 锁"、"非公平机制的锁"、"可重入的锁"等等。"公平机制"是指"不同线程获取锁的机制是公平的",而"非公平 机制"则是指"不同线程获取锁的机制是非公平的","可重入的锁"是指同一个锁能够被一个线程多次获取

3.ReadWriteLock

ReadWriteLock 接口以和Lock类似的方式定义了一些读取者可以共享而写入者独占的锁。JUC包只有一个类实现了该接口,

即 ReentrantReadWriteLock,因为它适用于大部分的标准用法上下文。但程序员可以创建自己的、适用于非标准要求的实现。

4.ReentrantLock

ReentrantLock是独占锁。所谓独占锁,是指只能被独自占领,即同一个时间点只能被一个线程锁获取到的锁。ReentrantLock锁包括" 公平的ReentrantLock"和"非公平的ReentrantLock"。"公平的ReentrantLock"是指"不同线程获取锁的机制是公平的",而"非公平的   ReentrantLock"则是指"不同线程获取锁的机制是非公平的",ReentrantLock是"可重入的锁"。

标签:JUC,同步,Java,ReentrantLock,获取,线程,公平,机制,多线程
From: https://blog.51cto.com/ratelcloud/7454360

相关文章

  • Java多线程____wait(), notify(), notifyAll()等方法介绍
    在JDK中,定义了wait(),notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而notifyAll()是唤醒所有的线程。wait,notify和notif......
  • java安全架构____Hmac秘钥加密自己的摘要数据
    importjavax.crypto.KeyGenerator;importjavax.crypto.Mac;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Base64;/***@authorAdministratorHMACutil*/publicclassHmacUtil{ private......
  • java安全架构____对称加密和非对称加密区别(对称秘钥,非对称秘钥)
    (一)对称加密(SymmetricCryptography)对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secretkey),这种方法在密码学中叫做对称加密算法。对称加密通常使用的是相对较小的密钥,一般小于256bit。因为密钥越大,加密越强.例如AES,DES(二)......
  • Java安全架构____KeyGenerator(对称)秘钥生成工具详解
    packagecom.ryx.frame.security.aes;importjava.security.SecureRandom;importjava.util.Date;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importorg.apache.commons.codec.binary.Base64;publicclassKeyGeneral{ /** *AES128,256......
  • java安全架构____读取.cer证书文件的信息
    importjava.io.FileInputStream;importjava.security.cert.CertificateFactory;importjava.security.cert.X509Certificate;/***@authorGod*随便找一个.cer文件读取即可*/publicclassCertUtil{ /** *@authorGod *@cerPathJava读取Cer证书信息 *@th......
  • Java字符画生成工具
    生成工具如果让我们手工的来编辑这些字符画,显然是一件非常困难的差事。所以,我们可以借助下面这些工具,轻松地根据文字或图片来生成用于Banner输出的字符画。http://patorjk.com/software/taaghttp://www.network-science.de/ascii/http://www.degraeve.com/img2txt.ph......
  • 61基于java的学生考勤管理系统设计与实现(可参考做毕业设计)
    本章节给大家带来一个基于java学生考勤管理系统设计与实现,可适用于学生考勤系统,校园考勤,大学考勤管理,企业考勤系统,公司考勤系统,学校考勤系统。引言本文首先介绍了学生考勤管理系统的研究背景与意义,其次介绍了系统的总体功能设计,接着将对系统规划好的总体功能拆分成了各个功能子......
  • java数据结构与算法_____选择排序
    importjava.util.Arrays;/***@authorGod*选择排序(Selectionsort)是一种简单直观的排序算法。*它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,*存放在序列的起始位置,直到全部待排序的数据元素排完。*选择排序是不稳定的排序方法(比如序列[5,5,3......
  • Java安全管理____Java通过Https链接读取证书基本信息
    importjava.net.URL;importjava.security.SecureRandom;importjava.security.cert.Certificate;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjavax.net.ssl.HostnameVerifier;importjavax.net.ssl.HttpsURL......
  • Java数据类型详细总结
    ......