首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
多线程
wzl
创建于2023-02-23
订阅专栏
Java多线程
暂无订阅
共15篇文章
创建于2023-02-23
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
ConcurrentHashMap
JDK 1.7 JDK 1.7 中的 ConcurrentHashMap 最外层是多个 Segment,每个 Segment 的底层数据结构与 HashMap 类似,仍然是数组和链表组成的拉链法。 每
跳跃表ConcurrentSkipListMap源码解析
最近在看 Redis 设计与实现,在 Redis 底层数据结构用到了跳跃表,趁着这次需求,看了一下 Java 基于跳跃表实现的集合。 跳跃表 跳跃表(SkipList)是一种有序的数据结构,每个节点维
ReadWriteLock 和 StampedLock
ReentrantReadWriteLock 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线
LongAdder
LongAdder 是在 JDK 1.8 的时候新增了一个原子类,如果是 count++ 操作,推荐使用 AtomicInteger 类;如果是 JDK 1.8 或之后版本,一般情况下,在高竞争的情况
BlockingQueue(阻塞队列)
什么是 BlockingQueue BlockingQueue 继承了 Queue 接口,是队列的一种。Queue 和 BlockingQueue 都是在 Java 5 中加入的。 Blockin
synchronized
对临界资源加锁一定要保证所有线程看到的是同一把锁,锁 new 对象是无效的 同步方法:用synchronized修饰的方法,静态同步方法锁的是当前类 .class,非静态同步方法锁的是 this sy
LockSupport
可以用它来阻塞和唤醒线程,notify 不能指定唤醒哪个线程,LockSuport 可以唤醒单个指定线程,notifyAll 可以唤醒全部线程。
Semaphore
Semaphore用法以及作用Semaphore用法以及作用Semaphore用法以及作用Semaphore用法以及作用
多线程的概念及常用的方法
使用多线程的目的 充分利用 CPU 资源,并发做多件事 创建线程的方式 自定义类继承 Thread 类重写 run() 方法 实现 Runnable 接口,重写 run() 方法,new Thread
Exchange
主要用于两个线程数据交换,如果一个线程执行 exchange 方法,那么会一直等着第二个线程执行 exchange 方法,进行数据交换
CountDownLatch 和 CyclicBarrier
CountDownLatch 使用,一次性的 Cyclicbarrier 使用,循环使用的,简单使用
ReentrantLock 和 Condition
ReentrantLock ReentrantLock 的基础使用 ReentrantLock 和 synchronized 的区别 ReentrantLock 结构 源码解析 在 new Reent
线程池
为什么要用线程池 重用存在的线程,减少对象创建销毁的开销 可有效的控制最大并发线程数,提高系统资源的使用率,同时避免多资源的竞争,避免堵塞 提供定时执行、定期执行、单线程、并发数控制等功能 方法使用
volatile
## volatile 的作用 ### 1.保存变量的内存可见性 解决变量不可见的问题,对于一写多读,是可以解决变量同步问题,但是对于多写,同样无法解决线程安全问题。 内存可见性是指:当某个线程修
ThreadLocal 与四种引用
ThreadLocal 在使用类的静态变量作为ThreadLocal的值时,会出现线程不安全 简介 ThreadLocal 是一个关于线程局部变量的类,通常情况下我们创建的变量是可以被任意线程