知识大全 Java多线程同步设计中使用Metux[1]

Posted

篇首语:愿君学长松,慎勿作桃李。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java多线程同步设计中使用Metux[1]相关的知识,希望对你有一定的参考价值。

Java多线程同步设计中使用Metux[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    Mutex是互斥体 广泛地应用在多线程编程中 本文以广为流程的Doug Lea的concurrent工具包的Mutex实现为例 进行一点探讨 在Doug Lea的concurrent工具包中 Mutex实现了Sync接口 该接口是concurrent工具包中所有锁(lock) 门(gate)和条件变量(condition)的公共接口 Sync的实现类主要有 Mutex Semaphore及其子类 Latch CountDown ReentrantLock等 这也体现了面向抽象编程的思想 使我们可以在不改变代码或者改变少量代码的情况下 选择使用Sync的不同实现 下面是Sync接口的定义

 public interface Sync public void acquire() throws InterruptedException; //获取许可 public boolean attempt(long msecs) throws InterruptedException; //尝试获取许可 public void release(); //释放许可

    通过使用Sync可以替代Java synchronized关键字 并提供更加灵活的同步控制 当然 并不是说 concurrent工具包是和Java synchronized独立的技术 其实concurrent工具包也是在synchronized的基础上搭建的 从下面对Mutex源码的解析即可以看到这一点 synchronized关键字仅在方法内或者代码块内有效 而使用Sync却可以跨越方法甚至通过在对象之间传递 跨越对象进行同步 这是Sync及concurrent工具包比直接使用synchronized更加强大的地方

    注意Sync中的acquire()和attempt()都会抛出InterruptedException 所以使用Sync及其子类时 调用这些方法一定要捕获InterruptedException 而release()方法并不会抛出InterruptedException 这是因为在acquire()和attempt()方法中可能会调用wait()等待其它线程释放锁 而release()在实现上进行了简化 直接释放锁 不管是否真的持有 所以 你可以对一个并没有acquire()的线程调用release()这也不会有什么问题 而由于release()不会抛出InterruptedException 所以我们可以在catch或finally子句中调用release()以保证获得的锁能够被正确释放 比如

 class X Sync gate; //  public void m()   try     gate acquire();   // block until condition holds   try       // method body      finally gate release();     catch (InterruptedException ex) // evasive action  

cha138/Article/program/Java/gj/201311/27679

相关参考

知识大全 Java多线程同步设计中使用Metux[3]

Java多线程同步设计中使用Metux[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 Java多线程同步设计中使用Metux[2]

Java多线程同步设计中使用Metux[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 Java开发中多线程同步技巧[1]

Java开发中多线程同步技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java开发中多线程同步技巧[3]

Java开发中多线程同步技巧[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java开发中多线程同步技巧[2]

Java开发中多线程同步技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java的多线程-实现多线程及线程的同步

Java的多线程-实现多线程及线程的同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一.实现

知识大全 Java多线程同步具体实例讲解

Java多线程同步具体实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多线程同步

知识大全 浅谈Java多线程的同步问题

浅谈Java多线程的同步问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程的同步依靠的是

知识大全 Java多线程共享数据、同步、通信

Java多线程共享数据、同步、通信  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一线程共享数据

知识大全 java破解ip屏蔽+多线程同步拨号

  单线程破解ip屏蔽比较容易只要拨号就行了  多线程抓取数据也比较容易但是引入多线程之后拨号就容易出现问题  多线程抓取的时候这个拨号就比较麻烦一点因为多线程拨号  会出现第一个线程拨号的时候第二个