Java 以编程方式检查是否授予了锁?
与wait()方法类似,如果调用对象(for wait())上未授予锁,则它会抛出IllegalMonitorStateException 我想知道 像wait()方法一样,我们可以通过编写一些代码来确保授予锁吗??Java 以编程方式检查是否授予了锁?,java,multithreading,concurrency,Java,Multithreading,Concurrency,与wait()方法类似,如果调用对象(for wait())上未授予锁,则它会抛出IllegalMonitorStateException 我想知道 像wait()方法一样,我们可以通过编写一些代码来确保授予锁吗?? 或者它仅仅是由JVM完成的???我不懂Java,但通常的锁语义是,当您试图获取锁时,您会阻塞直到获得它。这意味着不需要验证您是否实际获得了锁–当流到达下一行时,您可以确保您已被锁定。当你开始尝试用锁做其他事情时,比如检查它是否被锁定,你通常是做错了。你可以打电话询问是否有锁。但是,
或者它仅仅是由JVM完成的???我不懂Java,但通常的锁语义是,当您试图获取锁时,您会阻塞直到获得它。这意味着不需要验证您是否实际获得了锁–当流到达下一行时,您可以确保您已被锁定。当你开始尝试用锁做其他事情时,比如检查它是否被锁定,你通常是做错了。你可以打电话询问是否有锁。但是,您应该设计代码,以便知道是否有锁。您应该能够静态地确定这一点 notify/wait在Java5之前很有用。如果您有Java5或更高版本,那么使用并发库可能是一个更好的选择 编辑:我指的是2004年添加的并发包,在此之前它是一个外部并发库 只要写:
synchronized (thing) {
thing.wait ();
}
如果它还没有被锁定,它就会被锁定,如果它已经被锁定,那就没问题。我只是想知道我们是如何检查的?好的..concurrncy库是线程类还是其他什么?你能帮我吗?