jdk Collection和concurrent包 --第四篇-共享锁

见网址:

http://www.cnblogs.com/skywang12345/p/3505809.html

 

可以拿 共享锁和原来的独占锁 比较:

ReentrantReadWriteLock中的 WriteLock 是独占锁, ReentrantLock 也是独占锁,

他们的源码在获取锁上面 是一致的:

ReentrantLock

public class ReentrantLock implements Lock, java.io.Serializable {

public void lock() {
        sync.lock();
    }
    
    final void lock() {
            acquire(1);
        }

AbstractQueuedSynchronizer 的 
	  public final void acquire(int arg) {
        if (!tryAcquire(arg) &&
            acquireQueued(addWaiter(Node.EXCLUSIVE), arg))
            selfInterrupt();
    }

 

public static class WriteLock implements Lock, java.io.Serializable {

 public boolean tryLock( ) {
            return sync.tryWriteLock();
        }
        
public void lock() {
    sync.acquire(1);
}

另外通过 网址 http://www.cnblogs.com/skywang12345/p/3505809.html

的样例,可以看到 

myLock.readLock().lock(); 使用读 共享锁, 多个线程可以一起执行读操作; 

使用写 独占锁,各个线程之间是 互相阻塞的。

 

读写也是 互斥的, 因为当一个 写线程 获取到 写锁之后,其他的读线程 就没有办法获取到读锁了, 导致读的代码 被阻塞执行了。

 

继续看以下 三个样例,加深对 共享锁的认识:

09. Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例
10. Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例
11. Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例

 

共享锁和独占锁 释放的区别

在类AbstractQueuedSynchronizer 中 对比

共享锁和独占锁  的各个方法的区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDK是"Java Development Kit"(Java开发工具)的缩写,它是一个开发Java程序的软件JDK含了Java编程语言的编译器(javac),Java运行时环境(JRE),以及其他开发工具和库。通过JDK,开发者可以编写、编译和运行Java程序。 而ld-linux-x86-64.so.2是一个动态链接器,它是Linux操作系统上用于加载和链接共享库的重要组件。在Linux系统上,通常会使用动态链接库来共享公共的代码和函数,以降低程序的内存占用和提高效率。ld-linux-x86-64.so.2会在程序运行时自动加载和链接所需的共享库,以便程序能够正常执行。 JDK和ld-linux-x86-64.so.2在不同的领域扮演着不同的角色。JDK是开发Java程序的工具,它提供了编译、运行和调试Java代码的环境。开发者可以使用JDK编写和测试Java程序,并且进行性能优化和错误调试。 而ld-linux-x86-64.so.2是操作系统级别的组件,它在程序执行过程中负责加载和链接共享库,以便程序能够正常运行。在Linux系统中,很多应用程序都依赖于各种共享库,而ld-linux-x86-64.so.2会在程序启动时自动加载这些共享库,并将它们链接到程序中。 总结来说,JDK是用于开发Java程序的工具,而ld-linux-x86-64.so.2是Linux操作系统上的动态链接器,用于加载和链接共享库。它们在不同的层级上发挥着不同的作用,但都对程序的编译、运行和执行起着重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值