Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在阻塞时,线程是否从每个同步的方法或对象中退出?_Java_Multithreading - Fatal编程技术网

Java 在阻塞时,线程是否从每个同步的方法或对象中退出?

Java 在阻塞时,线程是否从每个同步的方法或对象中退出?,java,multithreading,Java,Multithreading,如果我有这样的东西 synchronized void doSomething() throws Exception { synchronized (lock1) { lock1.wait(); } wait(); } 一旦它阻塞在lock1.wait(),其他线程是否能够访问doSomething()并在其中工作 如果被阻止的线程收到信号并重新获得该方法的入口,该怎么办?它是否会在wait()上阻塞?否,调用wait()只会释放正在调用wait()的对

如果我有这样的东西

synchronized void doSomething() throws Exception {
    synchronized (lock1) {
        lock1.wait();
    }
    wait();
}
一旦它阻塞在
lock1.wait()
,其他线程是否能够访问
doSomething()
并在其中工作


如果被阻止的线程收到信号并重新获得该方法的入口,该怎么办?它是否会在
wait()
上阻塞?

否,调用
wait()
只会释放正在调用
wait()
的对象上的锁。在示例代码中,
lock1
上的锁将被释放,但
this
上的锁仍由线程保持。

请注意,这不会考虑到可能发生虚假唤醒。看见