• 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock

    时间:2022-09-21 10:14:15

    此篇博客所有源码均来自JDK 1.8 重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读...

  • 【死磕Java并发】-----J.U.C之AQS:CLH同步队列

    时间:2022-09-21 10:14:03

    此篇博客所有源码均来自JDK 1.8 在上篇博客【死磕Java并发】—–J.U.C之AQS:AQS简介中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS...

  • 死磕 java原子类之终结篇(面试题)

    时间:2022-09-10 20:55:59

    概览原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。在java中提供了很多原子类,笔者在此主...

  • 死磕 java集合之LinkedBlockingQueue源码分析

    时间:2022-08-24 15:58:10

    问题(1)LinkedBlockingQueue的实现方式?(2)LinkedBlockingQueue是有界的还是*的队列?(3)LinkedBlockingQueue相比ArrayBlockingQueue有什么改进?简介LinkedBlockingQueue是java并发包下一个以单链表实现...

  • 死磕 java集合之SynchronousQueue源码分析

    时间:2022-08-22 08:54:08

    问题(1)SynchronousQueue的实现方式?(2)SynchronousQueue真的是无缓冲的吗?(3)SynchronousQueue在高并发情景下会有什么问题?简介SynchronousQueue是java并发包下无缓冲阻塞队列,它用来在两个线程之间移交元素,但是它有个很大的问题,你...

  • 【死磕Java并发】—–深入分析volatile的实现原理

    时间:2022-06-01 21:41:09

    通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对vo...

  • 【死磕Java并发】-----深入分析volatile的实现原理

    时间:2022-06-01 21:41:03

     通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对v...

  • 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    时间:2022-05-31 21:06:00

    运行个JAVA用sleep去hold住packageorg.hjb.test;publicclassTestOnly{publicstaticvoidmain(String[]args){System.out.println("sleep..");try{Thread.sleep(10000000)...

  • 死磕 java集合之ConcurrentSkipListSet源码分析——Set大汇总

    时间:2022-05-03 22:30:10

    问题(1)ConcurrentSkipListSet的底层是ConcurrentSkipListMap吗?(2)ConcurrentSkipListSet是线程安全的吗?(3)ConcurrentSkipListSet是有序的吗?(4)ConcurrentSkipListSet和之前讲的Set有何不...

  • 死磕 java集合之ConcurrentLinkedQueue源码分析

    时间:2022-03-28 03:50:58

    问题(1)ConcurrentLinkedQueue是阻塞队列吗?(2)ConcurrentLinkedQueue如何保证并发安全?(3)ConcurrentLinkedQueue能用于线程池吗?简介ConcurrentLinkedQueue只实现了Queue接口,并没有实现BlockingQueu...

  • 死磕 java集合之ConcurrentHashMap源码分析(二)——扩容

    时间:2022-01-11 05:20:34

    本章接着上一章,链接直达请点我。初始化桶数组第一次放元素时,初始化桶数组。privatefinalNode<K,V>[]initTable(){Node<K,V>[]tab;intsc;while((tab=table)==null||tab.length==0){if((s...

  • 死磕 java同步系列之synchronized解析

    时间:2022-01-07 08:19:54

    这篇文章主要介绍了Java中syncronized正确使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  • 死磕 java线程系列之线程池深入解析——生命周期

    时间:2021-09-20 05:25:25

    (手机横屏看源码更方便)注:java源码分析部分如无特殊说明均基于java8版本。注:线程池源码部分如无特殊说明均指ThreadPoolExecutor类。简介上一章我们一起重温了下线程的生命周期(六种状态还记得不?),但是你知不知道其实线程池也是有生命周期的呢?!问题(1)线程池的状态有哪些?(2...

  • 【死磕Java并发】-----Java内存模型之重排序

    时间:2021-09-11 00:44:25

    在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:在单线程环境下不能改变程序运行的结果;存在数据依赖关系的不允许重排序如果看过LZ上篇博客的就会知道,其实这两点可以归结于一点:无法通过happens-before...

  • 【死磕Java并发】-----Java内存模型之happend-before

    时间:2021-09-11 00:44:31

    在上篇博客(【死磕Java并发】—–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,...

  • 【死磕Java并发】-----J.U.C之AQS:CLH同步队列

    时间:2021-09-11 00:44:19

    此篇博客全部源代码均来自JDK1.8在上篇博客【死磕Java并发】—–J.U.C之AQS:AQS简单介绍中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。CLH同步队列是一个FIFO双向队列,AQS依赖它来完毕同步状态的管理,当前线程假设获取同步状态失败时,AQS则会将当前线程已经...

  • 【死磕Java并发】-----Java内存模型之happens-before

    时间:2021-09-11 00:44:13

    在上篇博客(【死磕Java并发】—–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,...

  • 【死磕Java并发】-----深入分析synchronized的实现原理

    时间:2021-09-11 00:44:07

    记得刚刚開始学习Java的时候。一遇到多线程情况就是synchronized。相对于当时的我们来说synchronized是这么的奇妙而又强大,那个时候我们赋予它一个名字“同步”。也成为了我们解决多线程情况的百试不爽的良药。可是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对...

  • 【死磕Java并发】----- 死磕 Java 并发精品合集

    时间:2021-09-11 00:44:25

    【死磕Java并发】系列是LZ在2017年写的第一个死磕系列,一直没有做一个合集,这篇博客则是将整个系列做一个概览。先来一个总览图:【高清图,请关注“Java技术驿站”公众号,回复:脑图JUC】【死磕Java并发】—–深入分析synchronized的实现原理synchronized可以保证方法或者...

  • 死磕 java同步系列之mysql分布式锁

    时间:2021-09-03 04:03:07

    问题(1)什么是分布式锁?(2)为什么需要分布式锁?(3)mysql如何实现分布式锁?(4)mysql分布式锁的优点和缺点?简介随着并发量的不断增加,单机的服务迟早要向多节点或者微服务进化,这时候原来单机模式下使用的synchronized或者ReentrantLock将不再适用,我们迫切地需要一种...