ICode9

精准搜索请尝试: 精确搜索
  • JUC:ConcurrentHashMap2022-01-18 16:34:34

    ConcurrentHashMap 看前 本博客只是为了记录,学习流程,学习源码其大部分看的是ConcurrentHashMap 1.8 源码分析这位大佬的博客,写的十分详细,图文并茂非常易懂,十分推荐。我这篇博客只是在他的基础上加了点自己的理解(肯定有不少理解不到位的地方)以及查询了一些没讲到的函数。 介

  • JUC 中 4 个常用的并发工具类2022-01-17 10:01:32

    JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西。 该包的位置位于java下面的rt.jar包下面 4大常用并发工具类: CountDownLatch CountDownLatch是我目前使用比较多的类,CountDownLatch初始化时会给定一个计数,然后每次调用countDown() 计数减1, 当计数

  • JUC之线程池基础与简单源码分析2022-01-17 09:32:05

    线程池 定义和方法 线程池的工作时控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完成,再从队列中取出任务来执行。 特点: 线程复用,控制最大并发数,管理线程。 好处: 降低资源消耗。通

  • JUC之线程池基础2022-01-16 15:03:15

    线程池 定义和方法 线程池的工作时控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完成,再从队列中取出任务来执行。 特点: 线程复用,控制最大并发数,管理线程。 好处: 降低资源消耗。通

  • JUC辅助类CountDownLatch确保线程有序安全2022-01-16 13:04:57

    CountDown计数器减一方法,await方法线程等待阻塞,变为零继续执行 import java.io.IOException; import java.util.concurrent.CountDownLatch; public class Asd { public static void main(String []args) throws InterruptedException { CountDownLatch cut=ne

  • JUC之阻塞队列(BlockingQueue)基础2022-01-13 09:31:09

    阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 阻塞队列常用于生产者和消费者的场景: 当队列为空的,从队列中获取元素的操作将会阻塞; 当队列为满的,从队列中添加元素的操作将会阻塞; 所谓的阻塞:在某些情况下会挂起线程

  • JUC读写锁2022-01-12 15:03:36

    /** * 读写锁:一个资源可以被多个读线程访问,也可以被多个写线程访问,但是不能同时存在读和写两个线程 * 读读可以共享,读写不能共存,写写不能共存,Synchronized和Lock都是可重入锁  *  synchronized是一个关键字,由系统帮助我们释放锁,Lock是一个类,需要我们手动加锁  * 手动释

  • 05-JUC-ThreadPoolExecutor应用2022-01-12 14:34:01

    介绍 ExecutorPoolExecutor有几种类型: newFixedThreadPool newSingleThreadExecutor newCachedThreadPool scheduledThreadExecutor 见名知意,newFixedThreadPool 是固定线程数的线程池,newSingleThreadExecutor 是只有一个线程的线程池, newCachedThreadPool,看到cache是指缓存的意

  • JUC练习5——CopyOnWriteArrayList解决List下的同步安全问题2022-01-11 23:32:32

    import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; public class JucTest3 { public static void main(String[] args) { /** * 在多线程下ArrayList不安全会发生同步修改异常ConcurrentModificationException * 原因:

  • JUC练习3——lock实现精准唤醒demo2022-01-11 13:33:31

    实现精准唤醒:A执行后,B执行,B执行后C执行,C执行后A执行——》针对多线程下生产流水线问题,例如:C需要执行必须完成B操作,B操作需要执行必须要完成A操作代码示例如下所示: import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concu

  • JUC练习2——java生产者消费者demo2022-01-10 23:04:15

    以下的代码示例:先使用了synchronized关键字来实现生产者消费者,而后使用了JUC中的lock及其condition来实现生产者消费者 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class

  • 《JUC构建高并发系统实战》学习笔记2022-01-10 20:34:31

    JUC并发编程-大厂 课程说明 线程基础知识复习 多线程为什么那么重要 硬件:摩尔定律失效 软件:异步回调的生产需求 start一个线程 Java多线程相关概念 用户线程和守护线程 即便是写一个最简单的HelloWord程序,也会有两个线程:用户线程(main)和 守护线程(GC垃圾回收线程) C

  • JUC学习之共享模型工具之JUC并发工具包上2022-01-08 15:02:51

    JUC学习之共享模型工具之JUC并发工具包 AQS 原理概述实现不可重入锁自定义同步器自定义锁 心得起源目标设计1) state 设计2) 阻塞恢复设计3) 队列设计 ReentrantLock 原理非公平锁实现原理加锁流程解锁流程加锁流程源码分析: 可重入原理可打断原理不可打断模式可打断模式

  • JUC之Callable接口回顾和JUC辅助类2022-01-07 21:35:41

    Callable接口和JUC辅助类 Callable接口: 回顾: 创建线程的四种方式: 继承Thread 实现runnable接口 实现callable接口 使用线程池 之前的文章:多线程编程1-定义理解与三种实现方式 Runnable和Callable接口的差异: Runnable无返回值,Callable有返回值 Runnable不抛异常,Callable抛异常

  • JUC并发编程2022-01-07 21:01:45

    观看“尚硅谷”相关视频自己记录的笔记! 1.Synchronized关键字实现买票案例 class Ticket { public int number = 30; public synchronized void sale() { if (number > 0) { System.out.println(Thread.currentThread().getName() + " : 卖出

  • JUC之线程间定制化通信2022-01-06 01:08:26

      之前文章中写了下Condition的使用,这里我们详细说下其中的用法: 首先使用Condition需要实例化Lock private Lock lock = new ReentrantLock(); //创建锁 使用lock里面的newCondition方法创建Condition对象: private Condition c1 = lock.newCondition(); 其优点:比synchroniz

  • 02-JUC-CAS2022-01-05 15:10:02

    CAS JUC中多数类是通过volatile和CAS来实现的,CAS本质上提供的是一种无锁方案,而Synchronized和Lock是互斥锁方案; java原子类本质上使用的是CAS,而CAS底层是通过Unsafe类实现的。 线程安全的方法有: 互斥同步:ReentrantLock 和 syschronized 非阻塞同步:CAS ThreadLoc

  • JUC之集合中的线程安全问题2022-01-02 12:33:39

    集合线程安全问题 JDK Version:9 首先说下集合线程安全是什么:当多个线程对同一个集合进行添加和查询的时候,出现异常错误。 复现例子: package com.JUC; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class ListSecutity04 { public

  • JUC之线程间定制化通信2022-01-01 21:34:42

    线程通信之定制化 之前文章中写了下Condition的使用,这里我们详细说下其中的用法: 首先使用Condition需要实例化Lock private Lock lock = new ReentrantLock(); //创建锁 使用lock里面的newCondition方法创建Condition对象: private Condition c1 = lock.newCondition(); 其优点

  • JUC之Java中的阻塞队列及其实现原理2021-12-30 13:03:33

      在文章线程池实现原理 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中介绍了线程池的组成部分,其中一个组成部分就是阻塞队列。那么JAVA中的阻塞队列如何实现的呢?   阻塞队列,关键字是阻塞,先理解阻塞的含义——所谓阻塞队列两层语义——1)队列本身被阻塞(队列满,无法插入数据),2)使

  • JUC系列十五:异步回调2021-12-29 15:31:56

    1.1、原理 1.2、实例 package com.atguigu.juc; import java.util.concurrent.CompletableFuture; /** * 异步回调 */ public class CompletableFutureDemo { public static void main(String[] args) throws Exception { //同步 CompletableFuture

  • JUC并发编程快速入门篇(十)—— Fork/Join 框架和异步回调2021-12-28 02:03:55

    Fork/Join 框架和异步回调 Fork/Join 框架 Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。Fork/Join 框架要完成两件事情: Fork:把一个复杂任务进行分拆,大事化小 Join:把分拆任务的结果进行合并 案例 class MyTask

  • JUC高并发编程(二)之多线程下载支付宝对账文件2021-12-25 11:34:24

    1.背景 在实际开发中,经常会遇到支付需求,当然就会有支付对账的需求.... 2.项目结构 3.代码 3.1.线程池配置对象 @Configuration @EnableAsync public class ExecutorConfig { /** * @return */ @Bean public Executor asyncServiceExecutor() {

  • JUC并发编程快速入门篇(六)—— 三大辅助类2021-12-24 04:36:04

    三大辅助类 少计数 CountDownLatch CountDownLatch 类可以设置一个计数器,然后通过 countDown 方法来进行减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 await 方法之后的语句。 CountDownLatch 主要有两个方法,当一个或多个线程调用 await 方法时,这些线程会阻塞

  • JUC并发编程快速入门篇(七)—— 读写锁和锁降级2021-12-24 04:02:17

    读写锁和锁降级 读写锁 读写锁:ReentrantReadWriteLock 读操作共享资源,写操作独占资源 防止在写操作的过程中被其他线程读取(读取不完整) 缺点:可能造成读的饥饿问题,一直读,没有写 //资源类 class MyCache{ //创建资源集合 private volatile Map<String, Object> map = new Ha

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有