摘要: 1 Semaphore的使用与原理 [ˈsɛməˌfɔr, -ˌfor] 1-1 概述 应用场景:用来限制能同时访问共享资源的线程上限 实例:每个时刻最多三个线程访问资源 package chapter8; import lombok.extern.slf4j.Slf4j; import java. 阅读全文
posted @ 2021-04-12 08:03 狗星 阅读(127) 评论(0) 推荐(0)
摘要: 1 ReentrantReadWriteLock原理 1-1 概述 ReentrantReadWriteLock相关方法 1)内部实现了AQS的同步器Sync,并派生出NonfairSync与FairSync两个同步器子类(见下面源码) 读锁与写锁是共用一个同步器的,所以等待队列,锁的state也是 阅读全文
posted @ 2021-04-10 09:31 狗星 阅读(394) 评论(0) 推荐(0)
摘要: 1 读写锁介绍以及简单的使用 1-1 概述 读写锁应用场景:当读操作远远高于写操作时,这时候使用 读写锁 让 读-读 可以并发,提高性能。 类似于数据库中的共享锁: select ... from ... lock in share mode 读写锁中要求读读操作是并发的,读和写操作是互斥的 JUC 阅读全文
posted @ 2021-04-09 20:26 狗星 阅读(223) 评论(0) 推荐(0)
摘要: 一 AQS介绍与简单应用 AQS相关方法介绍 1-1 概述 定义:AbstractQueuedSynchronizer(抽象队列同步器) ,是阻塞式锁和相关同步器工具的框架(其他的同步器都是基于AQS,调用AQS的方法) 特点: 1)用 state 属性来表示资源的状态(分独占模式和共享模式),子类 阅读全文
posted @ 2021-04-09 13:43 狗星 阅读(214) 评论(0) 推荐(0)
摘要: 1 任务调度线程池的应用(固定时间点执行任务) 需求:每周四18:00开始执行一个任务。 package chapter8; import java.time.DayOfWeek; import java.time.Duration; import java.time.LocalDateTime; 阅读全文
posted @ 2021-04-07 21:39 狗星 阅读(290) 评论(0) 推荐(0)
摘要: 一、自定义线程池的实现 1-1 线程池的组成概述 线程池基本思想:创建一批线程,让这批线程得到频繁的利用。 减少线程对于资源的占用 减少线程上下文切换的开销。 自定义线程池的组成: 1)线程池(图中左边部分):线程池中有多个线程。 2)阻塞队列:生产者和消费者模式下,平衡任务产生与消费的组件 线程池 阅读全文
posted @ 2021-04-04 23:36 狗星 阅读(322) 评论(0) 推荐(0)
摘要: 1 引用的概念 1-0 基本概念 定义引用时一定要初始化为某个变量 引用只能引用变量不能引用表达式,常量 1-1 变量的引用 int a = 0; int &r = a; //变量r的类型为int & 相当于变量a多了一个别名r,对r的任何操作等同与对a的任何操作 1-2 函数返回值的引用 #inc 阅读全文
posted @ 2021-04-03 16:00 狗星 阅读(191) 评论(0) 推荐(0)
摘要: 1)JVM的程序计数器,方法区,本地方法区,虚拟栈,堆的介绍。 2JVM常量池与串池(StringTable)的理解。 3)Java的直接内存介绍。 阅读全文
posted @ 2021-04-03 15:50 狗星 阅读(323) 评论(0) 推荐(0)
摘要: 一 不可变对象的设计与实现 1-1 为什么需要不可变类(可变类在多线程环境下的安全性实例) 不可变类具有线程安全的特点 SimpleDateFormat类的使用问题 package chapter7; import lombok.extern.slf4j.Slf4j; import java.tex 阅读全文
posted @ 2021-04-01 09:43 狗星 阅读(251) 评论(0) 推荐(0)
摘要: 一 无锁机制的应用场景与基本原理(CAS操作) 1-1 CAS的应用场景 账户取款问题:如何确保多线程环境下,账户的取款没有出现问题。 采用三种方式: 不对公共变量上锁(不安全) 使用synchronized 采用CAS的无锁机制 package chapter6; import java.util 阅读全文
posted @ 2021-03-29 08:30 狗星 阅读(787) 评论(0) 推荐(0)
/* 返回顶部代码 */ TOP