Java 哪个线程在wait()和notify()多线程中持有锁
在下面的代码中,我对多线程有点困惑Java 哪个线程在wait()和notify()多线程中持有锁,java,multithreading,Java,Multithreading,在下面的代码中,我对多线程有点困惑 public class ThreadTest implements Runnable { private int num; private static SecondThread obj = new SecondThread(); public void run() { synchronized (obj) { //which thread holding lock here
public class ThreadTest implements Runnable {
private int num;
private static SecondThread obj = new SecondThread();
public void run() {
synchronized (obj) { //which thread holding lock here
try {
obj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
- 其他一些线程调用此对象和线程的notify方法 T恰好被任意选择为要唤醒的线程
- 其他一些线程为此对象调用notifyAll方法
- 另一个线程中断了线程T
- 指定的实时时间已过,或多或少。但是,如果超时为零,则不考虑实时性 线程只需等待通知李>
run()
方法,然后等待获得对obj
的锁定obj.wait()
,并释放对obj()的锁
obj
上获得锁,然后从obj.wait()
返回obj.wait()
中等待唤醒,则没有线程持有锁。(我的粗体):
此方法导致当前线程(称为T)将自身置于
设置此对象的等待,然后放弃任何和所有
此对象上的同步声明。线程T将被禁用
线程调度的目的和休眠,直到四件事之一
发生:
- 其他一些线程调用此对象和线程的notify方法 T恰好被任意选择为要唤醒的线程
- 其他一些线程为此对象调用notifyAll方法
- 另一个线程中断了线程T
- 指定的实时时间已过,或多或少。但是,如果超时为零,则不考虑实时性 线程只需等待通知李>
run()
方法,然后等待获得对obj
的锁定obj.wait()
,并释放对obj()的锁
obj
上获得锁,然后从obj.wait()
返回obj.wait()
中阻塞等待唤醒,则没有线程持有锁
synchronized
块的线程
synchronized
块的线程
obj.wait()代码>意味着什么
wait()
中的线程退出wait()
synchronized
块的线程
synchronized
块的线程
obj.wait()代码>意味着什么
public final void wait(long timeout)
throws InterruptedException