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