![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 83
眉梢i
这个作者很懒,什么都没留下…
展开
-
AQS原理和执行流程
随便写一个ReentrantLock应用 ReentrantLock reentrantLock = new ReentrantLock(true); reentrantLock.lock(); System.out.println("上锁了"); reentrantLock.unlock(); ctrl+鼠标左键点击lock方法,ctrl+alt+B选择该实现类为公平锁 公平锁的lock()方法 final void ...原创 2021-10-27 17:54:05 · 576 阅读 · 0 评论 -
乐观锁与悲观锁的原理
1.1乐观锁与悲观锁 悲观锁: 总是假设最坏的情况,当一个线程每次去拿数据的时候都认为其他线程会修改数据,所以线程每次就会在数据处理之前上锁,这样其他线程想拿到这个数据就会阻塞,直到获取到锁为止。悲观锁的实现往往依靠数据库提供的锁机制,即在数据库中,对数据操作前给记录加排他锁,如果锁获取失败,则说明数据正在被其他线程修改,当前线程则等待或者抛出异常,如果获取锁成功,则对记录进行操作,然后提交事务后释放排他锁。 下面看一个典型的例子: public int updateEntry(long ..原创 2021-10-18 14:23:16 · 400 阅读 · 0 评论 -
《Java并发编程之美》关于死锁,用户线程守护线程,ThreadLocal的理解
1.java并发编程之美第一章:并发编程线程基础 在这一章中,主要记录以下几点 1.1 理解线程上下文切换 在多线程编程中,线程个数一般是大于CPU个数,每一个CPU在同一时刻只能由一个线程执行,为了让用户感觉多个线程是在同时执行的,CPU采用了时间片轮转策略,每个线程在对应时间片占用内执行任务,当时间片使用完之后,线程退出执行状态进入就绪状态并让出CPU让其他线程占用,保留当前线程的执行现场,当下次时间片分配重新执行时,根据保留的线程的执行现场恢复执行现场继续执行 线程上下文切...原创 2021-10-14 15:14:08 · 160 阅读 · 0 评论