首页
首页
BOT
沸点
课程
直播
活动
AI刷题
NEW
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java并发编程
程序员陌影
创建于2023-04-10
订阅专栏
Java并发编程从入门到精通
等 7 人订阅
共40篇文章
创建于2023-04-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Java并发编程之ThreadLocal(三)
前言 上一篇文章中在介绍set方法的流程时,如果找到的索引位置Entry的key是null,表示该Entry已经过期了,就会调用replaceStaleEntry用新的Entry替换掉旧的,这篇文章就
Java并发编程之ThreadLocal(二)
前言 上一篇文章介绍了ThreadLocal的相关类结构和基本使用案例,这篇文章以这个案例为基础介绍下常用的相关方法。 ThreadLocal构造方法 set方法 get方法 remove()方法 T
Java并发编程之ThreadLocal(一)
简介 当多线程访问共享变量时,往往会发生并发问题,导致获取的数据不准确、不一致,解决这个问题的一种方法就是进行加锁,同时只让一个线程访问共享变量,但是加锁就意味着有额外的资源消耗。而ThreadLoc
Java并发编程之CyclicBarrier
简介 上一篇文章介绍了CountDownLatch可以用来计数,另一个也可以实现此功能的就是CyclicBarrier,而且与CountDownLatch相比最大的优点就是可以重复使用,下面通过几种情
Java并发编程之CountDownLatch
前言 CountDownLatch是一个倒数的同步器,和其他同步器不同的是,state为0时表示获取锁成功。常用来让一个线程等待其他N个线程执行完成再继续向下执行,比如主线程等待多个请求返回结果之后再
Java并发编程之Semaphore
前言 Semaphore是一种计数信号量,用来限制访问资源的线程数量,通过acquire方法获取许可require后访问资源进行操作,操作结束调用release方法来释放许可,当同时获取许可的线程数大
Java并发编程之ReentrantReadWriteLock(五)
前言 前面几篇文章介绍了读锁的加锁和解锁流程,内容较多比较复杂,写锁的流程相对就简单一些了,根据源码来看一下具体流程。 加锁 前面两步和ReentrantLock一样,通过lock方法进行加锁,然后调
Java并发编程之ReentrantReadWriteLock(四)
释放读锁 读锁的释放其实主要还是对state进行操作,只不过因为共享锁和独占锁都使用state存储锁的数量,所以需要在释放读锁时修改state的高16位的值。 释放读锁最终调用的是tryRelease
Java并发编程之ReentrantReadWriteLock(三)
加锁失败 如果尝试加锁失败了,就会执行doAcquireShared方法,源码如下: 这个方法和ReentrantLock的acquireQueued方法类似。addWaiter方法就是把当前线程封装
Java并发编程之ReentrantReadWriteLock番外篇
前言 上面是尝试加读锁流程的代码,既然这篇是番外篇,那就不按正常流程一点一点去分析了,着重拿出一部分来分析一下。ReentrantReadWriteLock和ReentrantLock相比,除了多了读
Java并发编程之ReentrantReadWriteLock(二)
书接上文Java并发编程之ReentrantReadWriteLock(一),这篇继续介绍加锁的第三步 尝试加锁 这个方法主体部分是一个死循环,分为四部分分别进行介绍 第一部分 首先获取独占锁的数量,
Java并发编程之ReentrantReadWriteLock(一)
简介 前面介绍的ReentrantLock,只要有线程加锁了其他线程就只能进行等待,但是如果多个线程都只是读取数据并没有修改数据的话,完全可以不用加锁。而ReentrantReadWriteLock就
Java并发编程之StampedLock
简介 StampedLock是jdk1.8中新增的一个类,是一种根据时间戳实现的锁机制,主要作用是为了提升读操作的性能。基本原理是加读锁、写锁都会生成一个时间戳,而在读取数据之前可以通过验证时间戳的方
Java并发编程之Condition(二)
前言 上篇文章Java并发编程之Condition(一)介绍了await方法的执行流程,需要着重关注的有以下几点: 如果先调用了interrupt方法,然后调用await会直接抛出异常; await方
Java并发编程之Condition(一)
基本使用 首先通过ReentrantLock来获取一个Condition对象,然后在获取到锁之后调用await()方法进行等待,当被其他线程调用signal唤醒或者interrupt中断才有机会继续向
Java并发编程之ReentrantLock源码(四)
前言 前面三篇文章介绍了ReentrantLock的加锁和释放锁的原理,这篇文章通过源码来了解下ReentrantLock的一些特性是如何实现的,主要包括以下三点: 可重入 可中断 公平锁 可重入 其
Java并发编程之ReentrantLock源码(三)
前言 前面两篇文章Java并发编程之ReentrantLock源码(一)和Java并发编程之ReentrantLock源码(二)介绍了ReentrantLock加锁成功和失败的流程,这篇文章主要介绍释
Java并发编程之ReentrantLock源码(二)
获取锁失败 书接上文Java并发编程之ReentrantLock源码(一) 当前线程尝试获取锁失败,然后创建了一个节点添加到了队尾, 然后方法继续执行acquireQueued(addWaiter(N
Java并发编程之ReentrantLock源码(一)
前言 ReentrantLock是基于AQS实现的可重入锁,并且能够实现公平锁和非公平锁。 如何使用 创建一个ReentrantLock锁对象 调用lock()方法进行加锁 执行业务操作 在final
Java并发编程之AQS
前言 这段话是AbstractQueuedSynchronizer源码注释中的一段,意思是AbstractQueuedSynchronizer(AQS抽象队列同步器)提供了一个基于FIFO等待队列来实
下一页