首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
juc并发编程
ShiShuoMing
创建于2024-09-12
订阅专栏
juc并发编程
暂无订阅
共14篇文章
创建于2024-09-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
线程池到底设置多少合适?
一、前言 可能很多人都看到过一个线程数设置的理论: CPU 密集型的程序 -- 核心数 + 1 I/O 密集型的程序 -- 核心数 * 2 真的有人按照这个理论规划线程数? 二、线程数和CPU利用率的
CompletableFuture
一、先来聊聊为什么要使用CompletableFuture? 那就先聊聊Future的局限性: Future表示一个异步计算的结果:提供了isDone()来检测计算是否已经完成,并且在计算结束后,可以
ThreadLocal
一、概述 ThreadLocal提供了线程的局部变量,每个线程都可以通过set()和get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,实现了线程的数据隔离~。 简要言之:往Thr
JUC -- (读写锁 ReentrantReadWriteLock)、(Semaphore)、(CountdownLatch)、(CyclicBarrier)
一、ReentrantReadWriteLock 当读操作远远高于写操作时,这时候使用 读写锁 让 读-读 可以并发,提高性能。 类似于数据库中的 select ... from ... lock i
JUC -- AQS 原理
一、AQS 原理 1. 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 AbstractQueuedSynchronizer有一个静态内部类No
线程池
一、自定义线程池 ThreadPool:消费者、线程集合 BlockingQueue:阻塞队列(平衡生产者与消费者速率的桥梁) 当生产者未生产任务时,消费者会进入阻塞队列等待 当消费者未及时消费时,生
共享模型之不可变
一、 日期转换的问题 问题提出 (线程不安全类SimpleDateFormat) 下面的代码在运行时,由于 SimpleDateFormat 不是线程安全的, 有很大几率出现 java.lang.Nu
共享模型之无锁
一、问题提出(如何保证取款方法的线程安全) 有如下需求,保证 account.withdraw 取款方法的线程安全 原有实现并不是线程安全的 执行测试代码 某次的执行结果 330 cost: 306
共享模型之内存
一、可见性 1.1 退不出的循环 先来看一个现象,main 线程对 run 变量的修改对于 t 线程不可见,导致了 t 线程无法停止: 为什么呢?分析一下: 初始状态, t 线程刚开始从主内存读取了
经典面试题--同步模式之顺序控制
一、固定运行顺序 必须先 2 后 1 打印 1.1 wait notify 版 1.2 Park Unpark 版 二、交替输出 线程 1 输出 a 5 次,线程 2 输出 b 5 次,线程 3 输出
共享模型之管程(二)
六、wait / notify 6.1 API 介绍 obj.wait() 释放锁,让进入 object 监视器的线程到 waitSet 等待 (该线程变为阻塞状态,停止执行) obj.notify(
共享模型之管程(一)
一、共享带来的问题 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗? 以上的结果可能是正数、负数、零。为什么呢?因为 Java 中对静态变量的自增,自减并
java线程
一、创建和运行线程 1.1 方法一,直接使用 Thread 输出:16:24:59.007 [Thread-1] ERROR com.ssm.user.juc.test - 开启线程 输出:16:25
进程、线程、并行、并发及应用
一、进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当