首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JUC
爱吃芝士的土豆倪
创建于2023-10-29
订阅专栏
主要介绍Java 高并发编程知识
等 6 人订阅
共22篇文章
创建于2023-10-29
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
真实并发编程问题-1.钉钉面试题
学完了并发编程,是否真的能够灵活应用其思想呢? 实践才是检验真理的唯一标准,好记性不如烂笔头。 下面就让我以我一个朋友社招面试钉钉的一道面试题来讲解下并发编程的实际应用吧。
程序员的护城河-并发编程
前言 并发编程详解 感慨 历时一个月,从一个只知道背八股的选手,到了对JAVA中常见的并发编程知识熟悉,这是一个蜕变,其实并发编程并不是一个单单的部分,当完整的学习完一个体系,就会发现,很多框架、中间
剑指JUC原理-20.并发编程实践
并发编程实践 定时任务 其实使用Thread是能够模拟定时任务的,其中一些定时任务框架的底层源码中,最后也会使用到Thread 实现这种定时任务的具体代码如下: 使用Thread类可以做最简单的定时任
剑指JUC原理-19.线程安全集合
线程安全集合类概述 线程安全集合类可以分为三大类: 遗留的线程安全集合如 Hashtable , Vector (出现时间比较早,而且所有方法都是用synchronized修饰,并发性能比较低,时至今
剑指JUC原理-18.同步协作
Semaphore 基本使用 [ˈsɛməˌfɔr] 信号量,用来限制能同时访问共享资源的线程上限。 输出 限制对共享资源的使用 semaphore 实现 使用 Semaphore 限流,在访问高峰期
剑指JUC原理-17.CompletableFuture
Future和Callable接口 Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。
剑指JUC原理-16.读写锁
ReentrantReadWriteLock 其定义就是支持冲入的读写锁,本质上也就是基于 ReentrantLock 实现的 当读操作远远高于写操作时,这时候使用 读写锁 让 读-读 可以并发,提高
剑指JUC原理-15.ThreadLocal
ThreadLocal介绍 官方介绍 从Java官方文档中的描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对
剑指JUC原理-14.ReentrantLock原理
AQS 原理 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义
剑指JUC原理-13.线程池
ThreadPoolExecutor 线程池状态 ThreadPoolExecutor 使用 int 的高 3 位(最高位1代表的是负数)来表示线程池状态,低 29 位表示线程数量 状态名 高三位 接
剑指JUC原理-12.手写简易版线程池思路
自定义线程池 线程是一个系统资源,没创建一个新的线程就会占用一定的内存,会用栈内存,如果是高并发情况下,一下子来了很多任务,如果我为每个认为都创建一个新的线程,对内存的占用是非常大的,甚至可能会出现内
剑指JUC原理-11.不可变设计
日期转换的问题 问题提出 下面的代码在运行时,由于 SimpleDateFormat 不是线程安全的 有很大几率出现 java.lang.NumberFormatException 或者出现不正确的日
剑指JUC原理-9.Java无锁模型
问题提出 有如下需求,保证 account.withdraw 取款方法的线程安全 原有实现并不是线程安全的 执行测试代码 某次的执行结果 为什么不安全 withdraw 方法 原因是因为 会出现指令交
剑指JUC原理-10.并发编程大师的原子累加器底层优化原理(与人类的优秀灵魂对话)
累加器性能比较 比较 AtomicLong 与 LongAdder 输出 第一次运行看不出来,jvm加入虚拟机内部,程序被反复执行后,才会做出优化,执行一次,效果看不出来。 性能提升的原因很简单,就是
剑指JUC原理-8.Java内存模型
Java 内存模型 JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。 JMM 体现在以下几个方面 原子
剑指JUC原理-7.线程状态与ReentrantLock
重新理解线程状态转换 假设有线程 Thread t 情况 1 NEW --> RUNNABLE 当调用 t.start() 方法时,由 NEW --> RUNNABLE 情况 2 RUNNABLE <
剑指JUC原理-1.进程与线程
进程和线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 I
剑指JUC原理-2.线程
创建和运行线程 直接使用Thread 使用Runnable配合Thread 其特点是:把“线程”和“任务”(要执行的代码)分开 Thread代表线程 Runnable代表可运行的任务(线程要执行的代码
剑指JUC原理-3.线程常用方法及状态
常用方法 start和run 调用run 输出: 程序仍在 main 线程运行, FileReader.read() 方法调用还是同步的 调用start 将上述代码的 t1.run() 改为 t1.s
剑指JUC原理-4.共享资源和线程安全性
共享问题 小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南、小女(线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天24小时使用算盘
下一页