多线程与高并发
文章平均质量分 65
爱梦
这个作者很懒,什么都没留下…
展开
-
多线程与高并发-ReentrantLock源码
一相关类和接口ReentrantLock继承接口Lock。ReentrantLock内部类Sync,继承抽象类AbstractQueuedSynchronizer。ReentrantLock内部类FairSync,继承抽象类SyncReentrantLock内部类NonfairSync,继承抽象类Sync二源码解析源码可以自己去翻看,比较简单,这里不粘贴了。lock(),公平锁FairSync:检查state是否为0,如果为0,调用compareAndSetState()原创 2021-08-30 09:08:47 · 92 阅读 · 0 评论 -
多线程与高并发-AtomicInteger、LongAdder
AtomicInteger原子操作类incrementAndGet方法采用CAS操作,做到了非阻塞同步。public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return next;原创 2021-08-27 15:13:52 · 174 阅读 · 0 评论 -
多线程与高并发-Synchronized与volatile
一.为什么要使用synchronized在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块。二.实现原理synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区。三.synchronized的三种应用方式Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法(实例方法):锁是当前实例对象原创 2021-08-27 08:49:47 · 103 阅读 · 0 评论 -
多线程与高并发-线程
一:进程与线程1. 进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。2. 线程线程是一条可以执行的路径。线程是一条执行路径,是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU原创 2021-08-23 09:33:58 · 177 阅读 · 0 评论