上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 23 下一页
摘要: 单例模式: 使用场景:一个全局使用的类频繁的创建和消费,从而提升提升整体的代码的性能。 特点: 私有的构造器。 因为不允许外部new实例 私有静态的全局变量 判断是否是单例 共有的静态方法 提供一个自己创建单例的方法,供外部使用。外部不能创建但是要使用 1.懒汉(线程安全): 对获取实例方法加syn 阅读全文
posted @ 2022-01-18 17:34 NobodyHero 阅读(102) 评论(0) 推荐(0)
摘要: 一、启动 引入依赖:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </ 阅读全文
posted @ 2021-09-24 16:48 NobodyHero 阅读(219) 评论(0) 推荐(0)
摘要: JDK动态代理: 1.接口2.对接口进行实现。3.创建代理类实现invcationHandler接口,并对Invoke方法重写。 Public Object invoke(Object proxy,Method method,Object[] args)throwsThrowable{returnn 阅读全文
posted @ 2021-08-12 15:10 NobodyHero 阅读(66) 评论(0) 推荐(0)
摘要: ThreadPoolExecutor: ctl:Integer原子变量,高3位表示线程池的状态,其他的位数用来记录线程池线程个数。 线程池状态:RUNNING:接受新任务并处理阻塞队列里的任务 SHUTDOWN:拒绝新任务并处理阻塞队列的任务 STOP:拒绝新任务并抛弃阻塞队列里的任务,同时会中断正 阅读全文
posted @ 2021-04-18 00:06 NobodyHero 阅读(132) 评论(0) 推荐(0)
摘要: CAS实现非阻塞队列ConcurrentLinkedQueue: 维护一个无边界的单向链表。非阻塞的CAS,没有加锁而是多次循环去替代阻塞的消耗,会出现弱一致性的问题。 第一次执行Peek或first会把head指向队列真正的第一个元素。 节点head和tail是volatile的(可见性保证),只 阅读全文
posted @ 2021-04-14 17:24 NobodyHero 阅读(303) 评论(0) 推荐(0)
摘要: LockSupport工具类: 主要用于挂起和唤醒线程,是创建锁和其他同步类的基础。 每个使用LockSupport的线程会和他关联一个许可证。 主要功能由Unsafe类实现: 1.park():如果已经拿到了许可证,就返回。没有拿到就阻塞。不会抛异常。 2.unpark(Thread thread 阅读全文
posted @ 2021-04-07 22:41 NobodyHero 阅读(379) 评论(0) 推荐(0)
摘要: CopyOnWriteArrayList: 是一个线程安全的ArrayList,对其的修改操作都是在底层的一个复制数组上进行的,也就是写时复制策略。 成员变量: Object数组 独占锁 方法: add set size isEmpty remove iterator 通过写时复制的方法来保证一致性 阅读全文
posted @ 2021-04-06 20:02 NobodyHero 阅读(112) 评论(0) 推荐(0)
摘要: AtomicLong:主要进行一些自增自减和交换操作。原子性的前提下用的是非阻塞CAS的方法,比Synchronized效率高。但是高并发下仍会同时竞争一个原子变量。 但是java提供了一个更好用的LongAdder LongAdder: 维护一个几只基值变量base和一个Cell数组。Cell数组 阅读全文
posted @ 2021-04-06 19:23 NobodyHero 阅读(88) 评论(0) 推荐(0)
摘要: JUC并发包的随机数生成器 弥补了Random类在多线程下的局限性。 局限性: Random生成随机数的机制是通过老种子计算出一个新的种子, 再通过新中子去计算随机数。 如果在多线程的情况下,虽然Random存在原子修饰符Atomic然后通过CAS避免多个线程共用一个老种子进行计算的情况。 但是这种 阅读全文
posted @ 2021-04-06 14:04 NobodyHero 阅读(74) 评论(0) 推荐(0)
摘要: 悲观锁:对外界修改数据保持悲观的态度(保守)。认为数据很容易被他的线程修改,所以在修改前加锁,在整个数据处理的过程中,对数据保持加锁的状态。 实现依靠数据库提供的锁,在数据记录操作前加排他锁。 如果获取锁失败说明数据正在修改,线程等待或抛出异常。 如果获取锁成功就对数据进行操作,然后提交事务后释放排 阅读全文
posted @ 2021-04-06 11:00 NobodyHero 阅读(52) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 23 下一页