简单使用 synchronized 关键字是做不到的。用 java.util.concurrent.locks.Lock的  tryLock(long time, TimeUnit unit) 方法。

解决方案 »

  1.   

    Java自带的内置锁(synchronized)是做不到LZ要求的功能的
    具有高级特性的Lock可满意LZ的需求
    如tryLock方法
    详细 可参见Java API文档
      

  2.   

    首先你的业务逻辑有问题,当你需要执行一个方法时就肯定是想要执行的,不会是监测到上锁了就不执行啊。如果你的业务逻辑是想一个方法只要执行一次,当有线程执行了,就不需要其他线程来执行了;那也可以在方法种加一个全局的标记,当另一个线程进来就访问标记来确定需不需要执行此方法。当然也可以使用java并发库中的LOCK。上面的大神已经说了。
      

  3.   

    “回复于: 2014-02-21 10:28:52
    简单使用 synchronized 关键字是做不到的。用 java.util.concurrent.locks.Lock的  tryLock(long time, TimeUnit unit) 方法。
    raistlic
    raistlic

    可以让其他线程等待时间(time*unit)为0。当其他线程调用到被锁的时候,就会立即退出。