JDK并发包

在JDK中,已经给我们开发人员提供了并发包。如:java.util.concurrent。为了更好在项目中使用并发包下的相关类,这里对常用的类进行总结和阐述。一来对于我来说可以更好的巩固以前的知识点,二来契合知识就要分享的初衷。

先看该包的结构图:

其实主要包括两类:同步控制工具和并发集合。

同步控制工具类

ReentrantLock 可重入锁

简单的说,可重入锁就是能够在单线程内重复获取锁,释放锁的时候需要依次释放。相对于Synchrinized比较,前者具有很好的灵活性和更细的控制粒度。ReentrantLock具备有如下的性质:

  1. 可重入: 单线程可以重复进入,但要重复退出。
  2. 提供有中断获取锁:lock.lockInterruptibly();
  3. 可限时: 超时不能获得锁,就返回false,不会永久等待构成死锁,如:lock.tryLock(12, TimeUnit.SECONDS)
  4. 公平锁: 先来先得, public ReentrantLock(boolean fair), 默认锁不公平的, 根据线程优先级竞争.

示例:

public class ReenterLock implements Runnable {
    public static ReentrantLock lock = new ReentrantLock();
    public static int i = 0;

    @Override
    public void run() {
        for (int j = 0; j < 10000; j++) {
            lock.lock();
             // 超时设置
//            lock.tryLock(5, TimeUnit.SECONDS);
            try {
                i++;
            } finally {
                // 需要放在finally里释放, 如果上面lock了两次, 这边也要unlock两次
                lock.unlock();
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值