zl程序教程

JUC并发编程

  • JUC并发编程01——谈谈锁机制:轻量级锁、重量级锁、偏向锁、锁消除与锁优化

    JUC并发编程01——谈谈锁机制:轻量级锁、重量级锁、偏向锁、锁消除与锁优化

    1.为什么要有并发编程计算机的cpu与I/O的效率并不是完全一致的,CPU的处理速度快时,在进行I/O操作时,可能会导致CPU空闲的状态,为了最打程度的利用cpu的资源,开发人员创造了并发编程,进程通过轮换可以最大程度的利用cpu的资源,同时给用户进程在同步执行的错觉。但是进程之间并不会共享数据,同时上下文的切换也比较耗时,线程横空出世,同一个进程中的不同线程之间内存共享一片内存区域,线程上下文切

    日期 2023-06-12 10:48:40     
  • juc并发编程02——JMM模型

    juc并发编程02——JMM模型

    我们在这篇文章中将介绍JMM模型,也就是java内存模型。注意,本文所提到的JMM模型与JVM内存模型属于不同层次的内容。JVM内存模型讲的是物理内存空间的分配,而JMM则强调对于JVM内存模型的抽象。1.java内存模型在计算机中,为了解决主内存的速度跟不上处理器速度的问题,我们给每个处理器添加一级或多级高速缓存(如下图)。但是,每个处理器上缓存的数据如何保证一致性呢? 为了实现缓存数据的一致

    日期 2023-06-12 10:48:40     
  • juc并发编程03——Lock与Condition接口

    juc并发编程03——Lock与Condition接口

    Lock与Condition接口前面两篇文章回顾了传统的synchronized关键字、JMM内存模型、volitile关键字,这篇文章开始我们正式介绍juc包。在jdk5之后,juc提供了Lock,与synchronized相似,都可以实现锁功能,但是需要手动获取锁和释放锁。不过它与synchronized又不太一样,synchronized关键字相当于是使用的其它类的monitor关联,在ma

    日期 2023-06-12 10:48:40     
  • Juc并发编程04——可重入锁、公平锁与非公平锁

    Juc并发编程04——可重入锁、公平锁与非公平锁

    1.ReentrantLock使用介绍之前我们一直使用的Lock实例都用的是ReentrantLock,实际上,这是一种可重入锁。简单来说,就是对同一个线程可以进行多次的加锁操作。public class Demo11 { public static void main(String[] args) { Lock lock = new ReentrantLock();

    日期 2023-06-12 10:48:40     
  • juc并发编程05——读写锁

    juc并发编程05——读写锁

    可重入锁是一种排他锁,同一时间只允许一个线程操作竞争资源。读写锁是针对读、写场景设计的,允许多个线程同时持有锁。读写锁维护了一个读锁和一个写锁。其机制如下:没有其它线程占用写锁的情况下,同一时间可以有多个线程加读锁。没有任意线程占用读锁的情况下, 同一时间只有一个线程可以加写锁。简单总结就是要么读,要么写,允许多个线程同时读,只允许一个线程单独写。看看源码。public interface Rea

    日期 2023-06-12 10:48:40     
  • Juc并发编程06——深入剖析队列同步器AQS源码

    Juc并发编程06——深入剖析队列同步器AQS源码

    我们看下Reentrantock的源码。 public void lock() { sync.lock(); } public void unlock() { sync.release(1); }复制原来lock,unlock等核心方法都是通过sync来实现的。而sync其实是它的一个内部类。abstract static class S

    日期 2023-06-12 10:48:40     
  • Juc并发编程07——公平锁真的公平吗(源码剖析)

    Juc并发编程07——公平锁真的公平吗(源码剖析)

    先来回顾下公平锁的tryAcquire代码。 protected final boolean tryAcquire(int acquires) { final Thread current = Thread.currentThread(); int c = getState(); if (c == 0) {

    日期 2023-06-12 10:48:40     
  • Juc并发编程08——Condition实现源码分析

    Juc并发编程08——Condition实现源码分析

    看看ReentrantLock中的newCondition方法final ConditionObject newCondition() { return new ConditionObject(); }复制再点进去发现原来就是AQS中的内部类。 public class ConditionObject implements Condition, java.io.Serializable

    日期 2023-06-12 10:48:40     
  • Juc并发编程09——自己动手实现排他锁

    Juc并发编程09——自己动手实现排他锁

    我们已经了解了AQS的的基本原理了,不如自己仿照其它锁实现一个排他锁吧。要求如下:同一时间只允许一个线程持有锁,不要求可重入(反复加锁直接忽视即可)。(1)实现Lock接口public class Demo23 { public static void main(String[] args) { } private static class myLock impleme

    日期 2023-06-12 10:48:40     
  • Juc并发编程10——原子类与ABA问题解决方案

    Juc并发编程10——原子类与ABA问题解决方案

    除了加锁以外,还可以使用原子类实现操作原子性。它底层采用CAS算法,使用简单、性能高效、线程安全。简单示范下它的使用。public class Demo24 { public static void main(String[] args) { AtomicInteger integer = new AtomicInteger(1); // 不能向Integer一样自动装箱

    日期 2023-06-12 10:48:40     
  • Juc并发编程11——深入源码:常用并发容器、阻塞队列使用与原理

    Juc并发编程11——深入源码:常用并发容器、阻塞队列使用与原理

    前言本文将介绍常用的并发容器,比较传统容器与并发容器的区别,介绍并发容器的基本原理。是面试常考、工作常用的热门知识点。深入源码:常用并发容器、阻塞队列使用与原理前言1.传统容器安全吗?2.常用并发容器介绍2.1 CopyOnWriteArrayList2.2 ConcurrentHashMap3.阻塞队列3.1 阻塞队列的介绍3.2 ArrayBlockingQueue源码分析3.3 Synchr

    日期 2023-06-12 10:48:40     
  • Juc并发编程12——2万字深入源码:线程池这篇真的讲解的透透的了

    Juc并发编程12——2万字深入源码:线程池这篇真的讲解的透透的了

    本文将介绍常见的线程池的使用方法,介绍线程池的参数、拒绝策略、返回参数获取以及定时调度。 2万字深入源码:线程池这篇真的讲解的透透的了1.线程池介绍2.线程池的使用2.1 构造方法参数详解2.2 线程池使用示例2.3 线程池的拒绝策略2.4 线程创建工厂2.5 线程异常3.使用Executors创建线程池3.1 newFixedThreadPool3.2 newSingleThreadExecu

    日期 2023-06-12 10:48:40     
  • Java的juc并发编程包

    Java的juc并发编程包

    Juc并发编程包一、介绍关于Java如何创建线程,大家都可以马上能想到有两种方法,无非不就是继承 Thread类和实现 Runnable接口嘛,顶多再加上个实现 Callable接口。而且 synchronized解决并发问题,如果学艺不精,锁住的对象是哪个都不知道,实在是不友好。所以,我们在企业开发中基本不这样使用线程。在线程的启动上,我们常使用线程池。对于线程池的使用,可以看我另一篇博客,讲到

    日期 2023-06-12 10:48:40     
  • 玩转JUC工具,Java并发编程不再危机四伏

    玩转JUC工具,Java并发编程不再危机四伏

    前言  当今互联网应用普遍需要支持高并发访问,而Java作为一种广泛使用的编程语言,其并发编程能力对于实现高性能的应用非常重要。而Java的JUC(java.util.concurrent)并发工具就提供了许多实用的工具类和接口,可以让Java应用轻松实现高效的并发编程。ReetrantLock  ReentrantLock是Java提供的一个可重入锁,也是Java并发编程中最常用的一种锁。与sy

    日期 2023-06-12 10:48:40     
  • 【并发编程】JUC并发编程(彻底搞懂JUC)

    【并发编程】JUC并发编程(彻底搞懂JUC)

    文章目录 一、背景二、什么是JUC?三、JUC框架结构四、JUC框架概述五、JUC中常用类汇总六、相关名词进程和线程进程线程创建线程的几种常见的方式 并发和并行用户线程和守护线程 七

    日期 2023-06-12 10:48:40     
  • JUC 并发编程学习笔记(总)

    JUC 并发编程学习笔记(总)

    文章目录 1. 什么是JUC2. 进程和线程2.1 进程2.2 线程2.3 并发2.4 并行2.5 线程的状态2.6 wait 和 sleep 的区别 3. Lock锁(重点)

    日期 2023-06-12 10:48:40     
  • JUC 并发编程学习笔记(下)

    JUC 并发编程学习笔记(下)

    文章目录 1. 四大函数式接口(必须掌握)2. Stream流式计算3. ForkJoin4. 异步回调5. JMM6. Volatile7. 单例模式8. 深入理解CAS9. 原子

    日期 2023-06-12 10:48:40     
  • JUC 并发编程学习笔记(中)

    JUC 并发编程学习笔记(中)

    文章目录 1. 集合类不安全1.1 List不安全1.2 Set不安全1.3 Map不安全 2. Callable(简单)3. 常用的辅助类(必会)3.1 CountDownL

    日期 2023-06-12 10:48:40     
  • JUC 并发编程学习笔记(上)

    JUC 并发编程学习笔记(上)

    文章目录 1. 什么是JUC2. 进程和线程2.1 进程2.2 线程2.3 并发2.4 并行2.5 线程的状态2.6 wait 和 sleep 的区别 3. Lock锁(重点)

    日期 2023-06-12 10:48:40     
  • 【JUC 并发编程】JUC 基本概念

    【JUC 并发编程】JUC 基本概念

    ❤️ 个人主页:水滴技术 🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬 🌸 订阅专栏:Jav

    日期 2023-06-12 10:48:40