摘要: 线程池解析 阅读全文
posted @ 2020-07-30 11:27 一南 阅读(94) 评论(0) 推荐(0) 编辑
摘要: Hash的概念 就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息 阅读全文
posted @ 2020-07-21 23:49 一南 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 实现MetaObjectHandler接口,会有两个方法需要我们手动实现,一个是insertFill,一个是updateFill insertFill 在目前看来,随着版本的变化没有影响,可以正常使用 updateFill 在3.3.x 之后的版本,如果我们采用 mybatis-plus 默认的 更 阅读全文
posted @ 2020-07-21 15:55 一南 阅读(3662) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock的实现 概念:锁的可重入 重进入是指任意线程在获取到锁之后能够再次获取该锁而不会被锁所阻塞,该特性的实现需要解决以下两个问题。 线程再次获取锁。锁需要去识别获取锁的线程是否为当前占据锁的线程,如果是,则再次成功获取。 锁的最终释放。线程重复n次获取了锁,随后在第n次释放该锁 阅读全文
posted @ 2020-07-07 00:03 一南 阅读(296) 评论(0) 推荐(0) 编辑
摘要: LockSupport LockSupport定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能,而LockSupport也成为构建同步组件的基础工具。 LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Thread thread)方法来唤醒一个 阅读全文
posted @ 2020-07-07 00:00 一南 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 显示锁的必要性 Java程序是靠synchronized关键字实现锁功能的,使用synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,也就是先获取再释放。 Lock的基本用法 在finally块中释放锁,目的是保证在获取到锁之后,最终能够被释放。 不要将获取锁的过程写在try 阅读全文
posted @ 2020-07-04 15:10 一南 阅读(346) 评论(0) 推荐(0) 编辑
摘要: Semaphore 基本概念: Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。 使用场景: Semaphore可以用于做流量控制,特别是公用资源有限的应用场景,比如数据库连接。 假如有一个需求,要读取几万个文件的数据,因为都是IO密集 阅读全文
posted @ 2020-07-04 15:06 一南 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 1.数据库表建联合主键; 2.数据库表建唯一约束; 3.查询和插入放在同一个同步代码块中;(加锁) 4.查询时锁表; 阅读全文
posted @ 2020-06-22 18:47 一南 阅读(597) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 介绍 闭锁,CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。 CountDownLatch是通过一个计数器来实现的,计数器的初始值为初始任务的数量。每 阅读全文
posted @ 2020-06-19 17:27 一南 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 线程之间的协作 用一个手枪打弹和装弹的例子,废话不多,上代码 package com.monco.ch1.wn; /** * @author monco * @date 2020/5/21 * @description: 给手枪装子弹 打子弹 */ public class Gun { privat 阅读全文
posted @ 2020-06-16 20:16 一南 阅读(121) 评论(0) 推荐(0) 编辑