Java并发编程
Java并发编程
lovesman
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
不可不说的Java“锁”事
不可不说的Java“锁”事原创 2020-12-05 11:51:02 · 330 阅读 · 0 评论 -
java中interruptor理解与使用
中断是通过调用Thread.interrupt()方法来做的. 这个方法通过修改了被调用线程的中断状态来告知那个线程,说它被中断了. 对于非阻塞中的线程, 只是改变了中断状态, 即Thread.isInterrupted()将返回true;对于可取消的阻塞状态中的线程, 比如等待在这些函数上的线程,Thread.sleep(), Object.wait(), Thread.join(), 这个线程收到中断信号后, 会抛出InterruptedException, 同时会把中断状态置回为true.但调Thre原创 2020-09-27 17:53:06 · 561 阅读 · 0 评论 -
MESI协议:保证可见性,无法保证原子性
M:修改 E:独占 S:共享 I:失效 基础知识:CPU会监听总线上消息的传递原创 2020-09-07 16:51:09 · 1077 阅读 · 0 评论 -
四、ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue和DelayQueue学习总结
wdew原创 2020-08-31 16:08:55 · 658 阅读 · 0 评论 -
五、CountDownLatch、CyclicBarrier和Semaphore的比较
javadoc是这么描述它们的: (1) CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. (2)CyclicBarrier : A synchroniz...原创 2020-01-27 00:04:08 · 577 阅读 · 0 评论 -
三、AQS框架详解——AbstractQueuedSynchronizer
AQS定义了一套多线程访问共享资源的同步框架,一个依赖状态(state)的同步器。 ReentrantLock ReentranLock是基于AQS框架实现的,支持手动加锁与解锁。支持锁的公平与非公平。 static ReentrantLock lock = new ReentrantLock(false); public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); }原创 2020-08-30 22:51:31 · 456 阅读 · 0 评论 -
二、synchronized原理详解
synchronized是一种内置锁,是可重入的。 1、用法 (1)放在实例方法上,锁住的当前实例对象; (2)放在类方法上,锁住的是当前类; (3)放在同步代码块中,锁住的是括号里面的对象。 2、底层原理 JVM层面:通过内部对象Monitor实现,基于进入和退出monitor对象实现方法和代码的块的同步; java代码使用了synchronized修饰符之后,编译为字节码时,会称为下图的形式。 任何一个对象有且只有一个Monitor与之关联,当一个对象的monitor被持有之后,它就处于锁定状态,其他原创 2020-08-30 10:57:02 · 379 阅读 · 0 评论 -
一、JMM模型与volatile详解
一、JMM模型 JMM是java内存模型的简称,是一个抽象的概念,它是围绕原子性、有序性、可见性展开的。 (1)主内存是共享内存区域,所有变量都存在主内存中,所有线程都可以访问; (2)各个线程的工作线程相互独立和隔离; (3)线程操作变量必须先从主内存中读取变量信息,然后在工作内存中进行修改,最后再写会主内存中,修改才会生效。 二、JMM与硬件内存架构的关系 从硬件层面描述一下多线程执行过程: cpu中一个核执行线程A,发现需要用到数据a,就会首先在寄存器中查找,发现没有,就会接着去L1中寻找,接着找原创 2020-08-27 23:49:31 · 1168 阅读 · 1 评论
分享