![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程并发编程
文章平均质量分 77
再吃1颗苹果
这个作者很懒,什么都没留下…
展开
-
java内存模型以及volatile关键字的作用
计算机内存模型: 计算机执行程序时每条指令都是在CPU中执行,执行指令的同时势必会有读写操作,这样就引申出一个问题。程序运行时数据的存储是存储在计算机的主存(物理内存)的,而内存的读取和写入的速度与CPU执行指令的速度差距是很大的,这样就造成了内存交互程序的执行效率大大降低,因而CPU中就有了高速缓存。 也就是说CPU在执行指令时,将主存中的数据复制到高速缓存中,将结果运算完毕,再将运算结果刷新到...原创 2019-07-21 12:57:01 · 128 阅读 · 0 评论 -
Java并发编程中对AQS的理解
什么是AQS? 全称AbstractQueuedSynchronizer(抽象队列同步器)。AQS是用于构建锁和同步器的框架,也是并发包的基础类。java并发包下很多API都是基于AQS来实现加锁和释放锁。 ReentrantLock加锁和释放锁的底层原理: ReentrantLock内部包含了一个AQS对象,也就是AbstractQueuedSynchronizer类型的对象。这个AQS对...原创 2019-07-23 13:18:09 · 233 阅读 · 0 评论 -
java线程池原理
我们知道当我们要使用线程的时候就去创建一个线程,这样会很方便,但是这样会有一问题: 每创建一个线程,就要和操作系统进行交互,CPU会为每个线程分配资源,但是CPU的资源是有限的,如果在大量高并发的环境下,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,损耗CPU的性能**,因为频繁创建线程和销毁线程需要时间。线程的创建需要开辟虚拟机栈,本地方法栈,程序计数器...原创 2019-04-14 13:31:27 · 168 阅读 · 0 评论 -
深入理解synchronized的使用及底层原理
synchronized的使用: 修饰方法:此时锁住的是当前对象实例 修饰静态方法:锁住的是当前类的c lass对象,因为一个类只有一个class对象,所以synchronized加在静态方法上,相当于该类的一个全局锁。 修饰代码块:锁住的是obj对象,作用在代码块中 synchronized原理:synchronized的同步是基于进入和退出monitor对象实现 sychronized修...原创 2019-08-05 11:44:02 · 213 阅读 · 0 评论 -
公平锁与非公平锁的实现原理
公平锁:按照线程等待顺序获取锁,一般将获取锁失败的线程放入等待队列中,每次从FIFO队列的队头取出线程获取锁。这种方式会造成性能低下,大量的时间花费在线程调度上。 非公平锁:不管等待顺序,每个线程获取锁的概率都是相等的,优点是提高了响应速度,不用把大量时间花费在线程调度上,而是花费在执行代码上。 公平锁的实现方式: ReentrantLock lock=new ReentrantLock(true...原创 2019-08-25 11:21:13 · 3581 阅读 · 0 评论