JUC
文章平均质量分 90
Java中的并发知识点
一枚coin
这个作者很懒,什么都没留下…
展开
-
线程池中的阻塞队列和拒接策略
在 Java 中,线程池使用包中的来管理线程。提供了几种不同类型的阻塞队列和拒绝策略,以便处理线程池中的任务调度和资源管理。原创 2024-05-26 19:04:24 · 854 阅读 · 0 评论 -
Java中的锁
线程八锁,实际是总结出来也就是,上锁【类、实例】和线程执行方法【是否是同一个实例】的划分,而增加sleep是为了能够更好的展示效果,能够更好去理解线程。原创 2024-05-15 20:20:37 · 893 阅读 · 0 评论 -
ThreadLocal原理
ThreadLocal,即线程本地变量。一个共享变量存进该容器相当于在线程内部拷贝了一个副本。ThreadLocal里面的变量都是存在当前线程的。当操作ThreadLocal里面的变量时,实际操作的是存在自己线程的那个变量副本,该变量副本对于每一个线程都是独立的,从而实现了变量的隔离性,保证了线程安全。原创 2024-03-17 16:18:28 · 948 阅读 · 1 评论 -
Java中的线程
线程是CPU调度的最小单位,它可以和属于同一个进程的其他线程共享这个进程的全部资源。原创 2024-04-18 01:00:00 · 1879 阅读 · 0 评论 -
Java中的线程池
线程池:一个容纳多个线程的容器,容器中的线程可以重复使用,省去了频繁创建和销毁线程对象的操作线程池作用:降低资源消耗,减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务提高响应速度,当任务到达时,如果有线程可以直接用,不会出现系统僵死提高线程的可管理性,如果无限制的创建线程,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控线程复用,同一个线程可以被重复使用,来处理多个任务。原创 2024-04-17 00:30:00 · 979 阅读 · 0 评论 -
Volatile
volatile 是 Java 虚拟机提供的轻量级的同步机制(三大特性)保证可见性保证有序性(禁止指令重排)不保证原子性性能:volatile 修饰的变量进行读操作与普通变量几乎没什么差别,但是写操作相对慢一些,因为需要在本地代码中插入很多内存屏障来保证指令不会发生乱序执行,但是开销比锁要小synchronized 无法禁止指令重排和处理器优化,为什么可以保证有序性和可见性。原创 2024-04-06 17:53:01 · 1158 阅读 · 0 评论 -
CAS(Compare And Swap)
LongAddr 类是 LongAccumulator 类的一个特例,只是 LongAccumulator 提供了更强大的功能,可以自定义累加规则,当accumulatorFunction 为 null 时就等价于 LongAddr。当一个主线程获取主内存值时,该内存值在写入主内存时已经被修改了 N 次,但是最终又改成原来的值,比如其他线程先把 A 改成 B 又改回 A,主线程使用CAS操作。执行的是循环操作,如果比较不成功一直在循环,最差的情况某个线程一直取到的值和预期值都不一样,就会无限循环导致饥饿,原创 2024-04-01 18:54:01 · 1231 阅读 · 0 评论 -
synchronized 中的锁升级
synchronized 的锁升级流程:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 // 随着竞争的增加,只能锁升级,不能降级。原创 2024-03-31 21:08:39 · 1731 阅读 · 0 评论