
多线程
文章平均质量分 91
Offer收割机L
这个作者很懒,什么都没留下…
展开
-
【多线程】CAS缺点以及synchronized原理
目录一、CAS缺点1、CAS中的ABA问题2、在竞争激烈以后,CPU开销较大3、不能保证代码块的原子性二、synchronized原理三、锁升级的过程1、对象头(1)Mark Word(2)指向类的指针(3)数组长度2、实例数据3、对齐填充字节4、偏向锁一、CAS缺点1、CAS中的ABA问题CAS操作想要进行赋值时,会拿原来的取值和现在的值比较;但是万一这个值在我们取值之后,被别的线程改变了,但是紧接着又被别的线程改回来了;比较一下值...原创 2021-03-02 23:35:40 · 633 阅读 · 0 评论 -
【多线程】读写锁与CAS
一、读写锁读写锁的特点:多个线程可以并发读线程间读读不互斥 读写互斥 写写互斥 读:加读锁 readlock 写:加写锁 writelock 只有读:不加锁 只有写:加sychronized、ReentrantLock 既有读又有写:读写锁在vector中加读、写锁:import java.util.AbstractList;import java.util.Arrays;import java.util.List;import java.util.RandomAcces原创 2021-02-24 18:07:37 · 494 阅读 · 0 评论 -
【多线程】Java中的阻塞队列(1)
一、阻塞队列什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列,这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的队列会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。二、BlockingQueue的核心方法放入数据offer(anObject):表示如果可能的话,将anObject加到Bloc原创 2021-02-23 18:25:57 · 161 阅读 · 0 评论 -
【多线程】Java多线程中的锁机制
Java多线程中的锁机制一、锁机制为什么要使用锁?多线程为了保证线程安全,让多个线程执行的情况和单线程一样,在读的时候是不影响线程安全的,但如果对数据操作,增加或者删除,几个线程同时进行,就会发生删多或者增加多的情况,这时候为了保证线程安全,就可以加锁。二、锁的种类一、重量级锁在1.6版本之前,加锁的操作是涉及到操作系统进行互斥操作,就是会把当前线程挂起,然后操作系统进行互斥操作修改,由mutexLock来完成,之后才唤醒。操作系统来判断线程是否加锁,所以它是一个重量级操作。挂起、唤原创 2021-02-21 23:06:56 · 460 阅读 · 0 评论