摘要: 下面介绍的是JUC包下一些线程安全类的一些简单使用和一些小demo。 Semaphore 信号量,即可以同时使用的线程数,tryrequire就是将信号量减一,release就是信号量+1,当等于0就会阻塞,大于零才会唤醒。 当需要控制线程访问数量,可以使用信号量来做控制,比较简单。 下面是使用信号 阅读全文
posted @ 2022-05-18 19:51 大队长11 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 书名《MySQL是怎样运行的:从根儿上理解MySQL》。 这本书讲得真的很好,建议大家想学习的去看看😊 本文是基于我的认识上将InnoDB的结构进行的回想,查缺补漏。 InnoDB记录结构 InnoDB是以页来存储数据的,一个页的大小为16KB。 InnoDB行格式有COMPACT行格式和Redu 阅读全文
posted @ 2022-05-17 21:11 大队长11 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 书名《MySQL是怎样运行的:从根儿上理解MySQL》可自行百度 以下是知识点总结 重新认识Mysql MySQL是一个C/S架构的软件。 在Windows安装后首先注册成服务,然后会在开机后自启动。 启动MySQL服务端。 直接在bin目录下执行mysqld 或者在配置文件my.ini中设置一些默 阅读全文
posted @ 2022-05-17 19:56 大队长11 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 本文紧接上文的AQS源码,如果对于ReentrantLock没有基础可以先阅读我的上一篇文章学习ReentrantLock的源码 ReentrantLock锁重入原理 重入加锁其实就是将AQS的state进行加一操作 然后释放锁资源将AQS的state进行减一操作 当state为0时才会彻底的释放锁 阅读全文
posted @ 2022-05-13 20:12 大队长11 阅读(336) 评论(0) 推荐(1) 编辑
摘要: AQS源码探究 竞争锁资源 我们进入ReentrantLock源码中查看其内部类 Sync 对AQS进行扩展公共方法并定义抽象方法的抽象类 FaireSync 实现公平锁的AQS的实现类 UnFairSync 实现非公平锁的ASQ的实现类 我使用例子进行的debug,然后一步一步看源码。例子在文章最 阅读全文
posted @ 2022-05-12 21:24 大队长11 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 定时调度线程池 Timer 当我们需要定时进行线程的调度 @Slf4j public class Test5 { public static void main(String[] args) { Timer timer = new Timer(); log.debug("开始了"); timer.s 阅读全文
posted @ 2022-05-11 21:39 大队长11 阅读(135) 评论(0) 推荐(0) 编辑
摘要: JDK自带线程池 线程池的状态 线程有如下状态 RUNNING状态:Accept new tasks and process queued tasks SHUTDOWN状态:Don't accept new tasks, but process queued tasks STOP状态: Don't 阅读全文
posted @ 2022-05-11 21:17 大队长11 阅读(88) 评论(0) 推荐(0) 编辑
摘要: JUC自定义线程池练习 首先上面该线程池的大致流程 自定义阻塞队列 首先定义一个双向的队列和锁一定两个等待的condition 本类用lock来控制多线程下的流程执行 take和push方法就是死等,调用await就是等,后面优化为限时等待 take调用后取出阻塞队列的task后会调用fullWai 阅读全文
posted @ 2022-05-11 19:15 大队长11 阅读(62) 评论(0) 推荐(0) 编辑
摘要: JUC练习数据库连接池实现 通过一个连接数组来充当连接池 一个原子的标记数组 通过cas来保持多线程下的安全,用synchronized来进行暂停和唤醒 @Slf4j public class MyConnectionPoll { // 连接池对象数组 private Connection[] co 阅读全文
posted @ 2022-05-10 21:22 大队长11 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 首先先介绍三个性质 可见性 可见性代表主内存中变量更新,线程中可以及时获得最新的值。 下面例子证明了线程中可见性的问题 由于发现多次执行都要到主内存中取变量,所以会将变量缓存到线程的工作内存,这样当其他线程更新该变量的时候,该线程无法得知,导致该线程会无限的运行下去。 public class te 阅读全文
posted @ 2022-05-07 19:59 大队长11 阅读(85) 评论(0) 推荐(0) 编辑