java - 在等待时从内部调用synchronized方法

时间:2010-04-02 04:17:18

标签: java

是否可以在等待资源变为可用的同时从同步方法内调用同步方法(使用wait())?感谢

2 个答案:

答案 0 :(得分:9)

Java的互斥锁是递归的,因此您可以递归调用synchronized方法或调用另一个已经锁定的同步方法。你需要告诉我们你特别想要做什么,虽然......许多线程锁定/同步的东西,如果做得不正确,可能会导致死锁,你的问题并不完全清楚你正试图这样做。

答案 1 :(得分:0)

没有。没有办法检查给定对象的监视器当前是否在java中保持,或者以原子方式“检查并抓住”对象的锁定。

您可能想要查看标准java包http://java.sun.com/javase/6/docs/api/java/util/concurrent/locks/package-summary.html。 Lock类具有tryLock()函数,它可以尝试获取锁定(因此,如果你的线程无法获得锁定,那么它可以根据tryLock()的返回值执行其他操作)。