2020年8月6日

摘要: 锁 1 公平锁/非公平锁 公平锁:多个线程申请获取同一个锁,按照线程的申请顺序,排队获取锁。公平锁的好处是等待的线程不会被饿死,相应的缺陷 就是整体吞吐量很低、效率很低,使用new ReentrantLock(true)可以构造一个公平锁。 非公平锁:多个线程申请获取同一个锁,获取锁的顺序不按照申请 阅读全文
posted @ 2020-08-06 19:29 shumeigang 阅读(108) 评论(0) 推荐(0)
摘要: sleep和wait的区别:1、sleep是Thread的静态方法,wait是Object的方法,任何对象实例都能调用。2、sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁(即代码要在synchronized中)。3、它们都可以被interrupted方法中断 阅读全文
posted @ 2020-08-06 19:27 shumeigang 阅读(882) 评论(0) 推荐(0)
摘要: Volatile 变量:一种同步的弱形式。它确保参一个变量的更新以可预见的方式告知其他的线程。1 Volatile 变量的操作不会加锁。也就不会引起执行线程的阻塞2 Volatile 变量地可见性的影响所产生的价值远远高于变量本身3 加锁可以保证可见性与原子性,volatile 变量只能可见性 4  阅读全文
posted @ 2020-08-06 19:25 shumeigang 阅读(124) 评论(0) 推荐(0)
摘要: concurrent包的实现 由于Java的CAS同时具有volatile读和volatile写的内存语义,因此Java线程之间的通信现 在有了下面4种方式。 1)A线程写volatile变量,随后B线程读这个volatile变量。 2)A线程写volatile变量,随后B线程用CAS更新这个vol 阅读全文
posted @ 2020-08-06 19:24 shumeigang 阅读(133) 评论(0) 推荐(0)

导航