前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 ☕专栏简介:深入、全面、系统的介绍java的基础知识 🌰 文章简介:本文将介绍java常用的set集合,建议收藏备用,创作不易,敬请三连哦 。文章目录1 HashSet类2 TreeSet类3 EnumSet类4 各Set类的性能分析Set集合与Collection基本相
......
379
0
0
2022-12-08
前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 ☕专栏简介:深入、全面、系统的介绍java的基础知识 🌰 文章简介:本文将介绍java常用的工具类,建议收藏备用,创作不易,敬请三连哦 。文章目录1. Objects类2.StringBuffer、StringBuilder3.ThreadLocalRandom与Rand
......
356
0
0
2022-12-08
一、继承1.1 继承的特点 子类可以获得父类的全部成员变量和方法称为继承,注意子类不能够继承父类的构造器。Java具有单继承的特点,一个类只能够有一个直接父类。所有类都继承了java.lang.Object类。 1.2 重写 子类可以对父类方法进行重写,重写必须遵守两小两同一大,即子类方法返回值的类型要比父类方法返回值类型要更小或者相同(儿子排场要小),子类
......
324
0
0
2022-12-08
前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 🍌 专栏简介:juc并发编程,讲解锁原理、锁机制、线程池、AQS、并发容器、并发工具等,深入源码,持续更新。 🌰 文章简介:本文主要介绍常用的并发工具类:Semaphore,Exchanger,Fork/Join框架,讲解其使用与原理文章目录1.Semaphore2.数据
......
368
0
0
2022-12-06
前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 🍌 专栏简介:juc并发编程,讲解锁原理、锁机制、线程池、AQS、并发容器、并发工具等,深入源码,持续更新。 🌰 文章简介:本文主要介绍常用的并发工具类:循环屏障CyclickBarrier,将深入剖析源码,讲解其使用与原理1.循环屏障的使用如果打一场游戏,必须等待游戏的
......
306
0
0
2022-12-06
前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 🍌 专栏简介:juc并发编程,讲解锁原理、锁机制、线程池、AQS、并发容器、并发工具等,深入源码,持续更新。 🌰 文章简介:本文主要介绍常用的并发工具类:CountdownLatch,将深入剖析源码,讲解其使用与原理线程计数器CountdownLatch源码剖析文章目录线
......
333
0
0
2022-12-06
前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 🍌 专栏简介:juc并发编程,讲解锁原理、锁机制、线程池、AQS、并发容器、并发工具等,深入源码,持续更新。 🌰 文章简介:本文主要介绍线程池的实现原理,注释十分详细,并且对于值的学习的代码做了点评 🍓 相关推荐:Juc并发编程12——2万字深入源码:线程池这篇真的讲解的
......
293
0
0
2022-12-06
本文将介绍常见的线程池的使用方法,介绍线程池的参数、拒绝策略、返回参数获取以及定时调度。2万字深入源码:线程池这篇真的讲解的透透的了1.线程池介绍2.线程池的使用2.1 构造方法参数详解2.2 线程池使用示例2.3 线程池的拒绝策略2.4 线程创建工厂2.5 线程异常3.使用Executors创建线程池3.1 newFixedThreadPool3.2 ne
......
293
0
0
2022-12-06
前言本文将介绍常用的并发容器,比较传统容器与并发容器的区别,介绍并发容器的基本原理。是面试常考、工作常用的热门知识点。深入源码:常用并发容器、阻塞队列使用与原理前言1.传统容器安全吗?2.常用并发容器介绍2.1 CopyOnWriteArrayList2.2 ConcurrentHashMap3.阻塞队列3.1 阻塞队列的介绍3.2 ArrayBlockin
......
301
0
0
2022-12-06
除了加锁以外,还可以使用原子类实现操作原子性。它底层采用CAS算法,使用简单、性能高效、线程安全。简单示范下它的使用。public class Demo24 {
public static void main(String[] args) {
AtomicInteger integer = new AtomicInteger(1)
......
322
0
0
2022-12-06
我们已经了解了AQS的的基本原理了,不如自己仿照其它锁实现一个排他锁吧。要求如下:同一时间只允许一个线程持有锁,不要求可重入(反复加锁直接忽视即可)。(1)实现Lock接口public class Demo23 {
public static void main(String[] args) {
}
private st
......
238
0
0
2022-12-06
看看ReentrantLock中的newCondition方法final ConditionObject newCondition() {
return new ConditionObject();
}
再点进去发现原来就是AQS中的内部类。public class ConditionObject implements Condition,
......
271
0
0
2022-12-06
先来回顾下公平锁的tryAcquire代码。protected final boolean tryAcquire(int acquires) {
final Thread current = Thread.currentThread();
int c = getState();
if (c == 0) {
if
......
289
0
0
2022-12-05
我们看下Reentrantock的源码。public void lock() {
sync.lock();
}
public void unlock() {
sync.release(1);
}
原来lock,unlock等核心方法都是通过sync来实现的。而sync其实是它的一个内部类。abstract static cla
......
286
0
0
2022-12-05
可重入锁是一种排他锁,同一时间只允许一个线程操作竞争资源。读写锁是针对读、写场景设计的,允许多个线程同时持有锁。读写锁维护了一个读锁和一个写锁。其机制如下:没有其它线程占用写锁的情况下,同一时间可以有多个线程加读锁。没有任意线程占用读锁的情况下, 同一时间只有一个线程可以加写锁。简单总结就是要么读,要么写,允许多个线程同时读,只允许一个线程单独写。看看源码。
......
294
0
0
2022-12-05