![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发、多线程
文章平均质量分 94
我的世界+1
这个作者很懒,什么都没留下…
展开
-
AQS
目录 AQS 是什么 AQS 的两种功能 AQS 的内部实现(node) Node 的组成 释放锁以及添加线程对于队列的变化 AQS 是什么 在 Lock 中,用到了一个同步队列 AQS,全称 AbstractQueuedSynchronizer,它 是一个同步工具也是 Lock 用来实现线程同步的核心组件。如果你搞懂了 AQS,那 么 J.U.C 中绝大部分的工具都能轻松掌握。 AQS 的两种功能 从使用层面来说,AQS 的功能分为两种:独占和共享 独占锁,每次只能有一个线...原创 2020-05-20 17:56:59 · 309 阅读 · 0 评论 -
synchronized 的应用
synchronized 有三种方式来加锁 1. 修饰实例方法,作用于当前实例加锁,进入同步代码前 要获得当前实例的锁 2. 静态方法,作用于当前类对象加锁,进入同步代码前要 获得当前类对象的锁 3. 修饰代码块,指定加锁对象,对给定对象加锁,进入同 步代码库前要获得给定对象的锁。 不同的修饰类型,代表锁的控制粒度 思考锁是如何存储的 可以思考一下,要实现多线程的互斥特性,那这把锁需要 哪些因素? 1. 锁需要有一个东西来表示,比如获得锁是什么状态、无 锁状态是什么状态 2. 这个状态需要对.原创 2020-05-18 19:06:11 · 372 阅读 · 0 评论 -
java并发编程基础
线程的生命周期:线程有6种状态:(NEW,RUNNABLE,BLOCKED,WAITING,TIME_WAITING,TERMINATED) NEW:初始状态,线程被构建,但是还没有调用start方法 RUNNABLE:运行状态,java把操作系统中的就绪和运行两种状态同意称为“运行中” BLOCKED:阻塞状态:表示线程进行等待状态:也就是因为某种原因放弃了CPU的使用权,阻塞分为几种情况: 等待阻塞:运行的线程执行wait()方法,jvm会把当前的线程放入等待队列 同步阻塞:运行的线...原创 2020-05-18 16:54:57 · 145 阅读 · 0 评论 -
Java CountDownLatch应用
Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的await()方法都会阻塞,直到这个计数器的计数值被其他的线程减为0为止。 ...原创 2020-04-08 16:30:04 · 128 阅读 · 0 评论 -
ReentrantLock使用场景和实例
转载来源: 使用场景:https://my.oschina.net/noahxiao/blog/101558 实例:http://hyxw5890.iteye.com/blog/1578597 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。 可重入概念 若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入...原创 2020-04-08 16:03:52 · 2431 阅读 · 1 评论