![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
wulitaot
这个作者很懒,什么都没留下…
展开
-
关于AQS的学习转载
AbstractQueuedSynchronizerAbstract抽象,但是它并不是抽象类,单独使用没有意义,通过它来实现锁和同步组件才有意义,相当于一个模板方法模式jdk5出现的,进入API包java.util.concurrent.locks一脸懵逼搬砖学习1 https://www.cnblogs.com/micrari/p/6937995.html2 http://ifeve.com/i...转载 2018-03-07 16:02:44 · 99 阅读 · 0 评论 -
java多线程-volatile
新的解决线程安全性问题的方案volatilesyncronized可以解决线程中遇到的安全性问题相对来说重量级锁虽然jdk6增加了轻量级锁和偏向锁实际情况使用起来显得笨重volatile属于轻量级锁,被volatile修饰的变量在线程之间是可见的可见:一个线程修改了这个变量的值在另外一个线程中能够独到这个修改后的值synchronized除了线程之间互斥以外,还有一个非常大的作用,就是保证可见性(...原创 2018-02-27 17:58:13 · 122 阅读 · 0 评论 -
java并发编程原理
cmd看字节码命令 javap -verbose xx.classstart-----readtorun-----run-------stop wait|sleep | bolcked创建线程的多种方式:1.继承Thread类extends Thread重写run方法@Overridepublic void run(){ //getName()可...原创 2018-02-27 17:56:19 · 291 阅读 · 0 评论 -
26细读ReentrantReadWriteLock源码
1.ReentrantReadWriteLock实现的类2.其构造方法传递参数支持公平锁3引出Sync同步器4.读锁实现5.写锁实现6.同步器、AQSS、锁关系读写锁需要保持的状态1写锁重入的次数2读锁的个数(写锁只有1个,而读锁是有多个,在发生写操作的时候,如果读锁的个数不为0,我们认为写锁拿不到,只有等所有的读锁都释放了,写锁才能够进入,这就是为何要获取读锁个数的原因)3每个读锁重入的次数方法...原创 2018-03-09 15:28:58 · 115 阅读 · 0 评论 -
27ReentrantReadWriteLock锁降级
锁降级是指写锁降级为读锁在写锁没有释放的时候,获取到读锁,再释放写锁demo:锁升级把读锁升级为写锁在读锁没有释放的时候,获取到写锁,再释放读锁重要:这里是获取不到写锁,因为读锁和写锁是互斥的,而且读锁是共享锁,因此读锁在没有释放的时候,我们是拿不到写锁,所以在ReentrantReadWriteLock中是不支持锁升级 的...原创 2018-03-09 18:12:57 · 175 阅读 · 0 评论 -
线程通信-wait和notify方法使用
假设A线程和B线程共同操作一个x对象(同步锁),A、B线程可以通过x对象的wait和notify方法来进行通信,流程如下:1,当A线程执行x对象的同步方法时,A线程持有x对象的锁,B线程则在x对象的锁池中等待。2:A线程在同步方法中执行x.wait()方法时,A线程释放x对象的锁,进入x对象的等待池中。3:在x对象的锁池中等待锁的B线程获取x对象的锁,执行x对象的另一个同步方法。4:B线程在同步方...原创 2018-04-19 16:39:30 · 160 阅读 · 0 评论 -
线程通信-使用Lock和condition接口
Lock机制根本就没有同步锁,也就没有自动获取锁和自动释放锁的概念。因为没有同步锁,所以Lock机制不能调用wait和notify方法。解决方案:Java5提供了Lock机制的同时提供了处理Lock机制的通信控制的Condition接口。1、使用Lock机制取代synchronized代码块和synchronized方法2、使用condition接口对象的await、signal、signalAl...原创 2018-04-19 16:40:01 · 156 阅读 · 0 评论