小结java自带的跟锁相关的一些类
java.util.concurrent包下的一些跟锁相关的类列表
| 类 | 简介 | ||||||||||||||||||||||||||||||||||||||||||||
| locks.Lock接口 |
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。 所有已知实现类:ReentrantLock, ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock 方法包括:
|
||||||||||||||||||||||||||||||||||||||||||||
| locks.ReentrantLock类 |
public class ReentrantLock extends Object implements Lock, Serializable 一个可重入的互斥锁 可以实现公平锁,默认为非公平锁。 构造函数:
常用方法: Lock接口上定义的那些方法 + 下面表中的查询方法
|
||||||||||||||||||||||||||||||||||||||||||||
| locks.ReadWriteLock接口 |
ReadWriteLock 维护了一对相关的 所有已知实现类:locks.ReentrantReadWriteLock
|
||||||||||||||||||||||||||||||||||||||||||||
|
locks. ReentrantReadWriteLock 类 |
public class ReentrantReadWriteLock extends Object implements ReadWriteLock, Serializable 该类有如下几个特点: 1、默认为非公平锁模式,可以调用有参的构造函数构建公平锁。 2、可重入: 此锁允许 reader 和 writer 按照 ReentrantLock 的样式重新获取读取锁或写入锁。在写入线程保持的所有写入锁都已经释放后,才允许重入 reader 使用它们。 3、锁降级:允许从写入锁降级为读取锁,其实现方式是:先获取写入锁,然后获取读取锁,最后释放写入锁。但是,从读取锁升级到写入锁是不可能的。 示例: class CachedData {
4、锁获取可中断:读取锁和写入锁都支持锁获取期间的中断。 5、写锁Condition支持,但读锁不支持Condition。 注意事项:此锁最多支持 65535 个递归写入锁和 65535 个读取锁。试图超出这些限制将导致锁方法抛出 Error。 构造函数:
嵌套类:
主要的方法有:
|
||||||||||||||||||||||||||||||||||||||||||||
| CountDownLatch类 |
一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。该类为一次性的锁,不可重用。 构造函数: 方法包括:
|
||||||||||||||||||||||||||||||||||||||||||||
| CyclicBarrier类 |
一个同步辅助类,它允许一组线程互相等待(调用await),当等待的线程数达到构造函数中int parties(屏障)的数量时才线程组里的线程才能继续往下执行/退出,同时它有一个带Runnable入参的构造函数允许在线程组突破这个屏障后(但在释放所有线程之前)执行相关的Runnable的代码(也就是最后一个达成突破屏障的那个线程达到后)。该类可重用。 通俗点讲:在hadoop等map/reduce分布式计算框架中里有用到这种思想,将一个任务拆成多个子任务,然后最后一子任务完成后整个任务才能继续往下执行(汇总各个子任务的结果)。 构造函数:
方法列表:
|
||||||||||||||||||||||||||||||||||||||||||||
| Semaphore类 |
一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 通俗的讲就是:一个令牌池,通过acquire()方法获取一个令牌,如果没获取到就等待,获取到了就继续执行,执行完毕通常需要调用release()方法归还令牌,当归还的时候回唤醒正在等待获取令牌的线程来争取这个令牌。 该类默认为非公平锁,但有公平锁的构造函数可选。 构造函数:
方法列表:
|
小结java自带的跟锁相关的一些类的更多相关文章
- JAVA实现带图片的列表——JList
JList:显示对象列表并且允许用户选择一个或多个项的组件. JList的构造方法: 1.根据数组创建列表: JList(Object[] listData) 构造一个 JList,使其显示指定数组中 ...
- java自带工具-jps、jinfo、jstack、jstat、jmap
掌握java自带的这些监控工具,有助与我们很好的分析问题和jvm性能调优秀.收集了些网上整理很好的文章. Java监控工具.调优.调试辅助函数 Java自带的GUI性能监控工具Jconsole以及Ji ...
- Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm
一.本文的目的 Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggle ...
- java自带BASE64工具进行图片和字符串转换
java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...
- Java自带的keytool命令
使用Java自带的keytool命令,在命令行生成. 1.生成服务器端私钥kserver.keystore文件 keytool -genkey -alias serverkey -validity 1 ...
- java发送带附件的邮件
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- [转] 引用 Java自带的线程池ThreadPoolExecutor详细介绍说明和实例应用
PS: Spring ThreadPoolTaskExecutor vs Java Executorservice cachedthreadpool 引用 [轰隆隆] 的 Java自带的线程池Thre ...
- Java 自带MD5加密 Demo
package demo; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; pub ...
- java自带的监控工具VisualVM(二)远程监控
ps:尝试了网上的几个网友提供的方法,始终不得其法,汇总后,终于尝试成功!将一些需要注意的细节也记录下来以后备用! 我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目 ...
随机推荐
- MySQL到Greenplum迁移分析
MySQL到Greenplum迁移分析 1 数据类型对比 MySQL PostgreSQL comments 数值类型 TINYINT SMALLINT gp中无zerofill属性及unsign ...
- SKU与SPU
首先,搞清楚商品与单品的区别.例如,iphone是一个单品,但是在淘宝上当很多商家同时出售这个产品的时候,iphone就是一个商品了. 商品:淘宝叫item,京东叫product,商品特指与商家有关的 ...
- [转]用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面
FROM : http://blog.csdn.net/gavin_luo/article/details/40620217 现在很流行微信网页小游戏,用html5制作的小游戏移过来,可以放到微信浏览 ...
- scala编程第16章学习笔记(1)
List列表的基本操作 head方法获得列表的第一个元素 tail方法获得列表除第一个元素之外的其它元素 isEmpty:判断列表是否为空,空的话返回真 last:获得列表最后一个元素 init:获得 ...
- IIS 7.0 SSL 部署指南
一. 生成证书请求 1.进入IIS控制台 进入IIS控制台,并选择服务器的服务器证书设置选项. 2.添加证书请求 进入服务器证书配置页面,并选择“创建证书申请” 3.选择加密服务提供 ...
- 常用sql备份
统计数据库中表格数据行数所占空间和索引情况 set nocount on exec sp_MSForEachTable @precommand=N' create table ##( id int i ...
- opengl 教程(24) shadow mapping (2)
原帖地址:http://ogldev.atspace.co.uk/www/tutorial24/tutorial24.html 本篇教程中,我们通过shadowmap来实现阴影渲染. 我们知道shad ...
- VS2010整合NUnit进行单元测试
1.下载安装NUnit(最新win版本为NUnit-2.6.0.12051.msi) http://www.nunit.org/index.php?p=download 2.下载并安装VS的Visua ...
- 基于JT/T808协议的车辆监控平台架构方案
技术支持QQ:78772895 1.接入网关应用采用mina/netty+spring架构,独立于其他应用,主要负责维护接入终端的tcp链接.上行以及下行消息的解码.编码.流量控制,黑白名单等安全控制 ...
- Centos下配置单元测试工具gtest
gtest是google提供的一个非常强大的单元测试工具,下载地址:https://code.google.com/p/googletest 我下载的是gtest-1.6.0.拷贝到Centos系统上 ...