不管是内部锁还是Lock都是独占锁,或者称之排他锁,即读写互斥、写写互斥、读读互斥;与排他锁相对的另一种锁是共享锁,Java的ReadWriteLock是一种共享锁,提供读读共享,但读写和写写仍然互斥。ReadWriteLock最大的特性就是读读共享,比如A线程读锁正在进行读取操作,此时如果B线程请求读锁,那么B线程可以马上顺利获得读锁而无需等待,但此时如果C线程请求写锁,那么C线程需要等待锁可用
Thread.interrupt()方法可用于中断指定线程,但线程并不是在任何状态下可被立即中断,一般只有当线程处于阻塞状态(调用wait(),join(),sleep()等方法)时才会被立即中断,如果线程处于不可被立即中断状态,那么Thread.interrupt()只会标志线程的中断状态,以便后续操作用于判断,即isInterrupted()方法会返回true.线程等待获取内部锁的时候,是一种
当线程请求内部锁时,如果锁已经被占用,则请求线程必须无条件等待,这往往会造成很多奇怪问题,相互等待是造成死锁的重要原因之一,著名的哲学家就餐问题就是个典型的案例。新的Lock锁提供了尝试获取锁失败自动放弃的方法tryLock(),具有更完善的错误恢复机制。boolean tryLock(); boolean tryLock(long time, TimeUn
Lock的实现类ReentrantLock的构造函数提供了两种锁获取公平性选择,公平与非公平,默认为非公平,这相比传统的内部锁只使用非公平机制提供了更灵活的选择。何谓公平与非公平?简单的说就是非公平竞争机制允许插队,而公平竞争机制不允许插队。公平竞争机制下,所有线程都必须排队按顺序来获得锁,即先到先服务。非公平竞争机制下,新线程在请求锁时如果锁刚好释放,可以及时抢占锁,而不让给排在队头的线程,但如
使用Lock进行线程协作
使用Lock同步线程
分析线程修改InheritableThreadLocal变量的可见性
SynchronousQueue、LinkedBlockingQueue、ArrayBlockingQueue性能测试比较
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号