请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,我还是不理解为什么wait,notify,notifyAll定义在Object里面

如果定义在Thread里面,有什么影响吗?
Thread lock = new Thread();
我这样使用
和定义在Object中
Object lock=new Object();
这样有什么区别吗
我的代码如下:

public class Test6 {
    static Thread lock = new Thread();

    static class Thread0 extends Thread {
        @Override
        public void run() {
            System.out.println("开始唤醒");
            synchronized (lock) {
                lock.notify();
            }
            System.out.println("唤醒结束");
        }
    }

    static class Thread1 extends Thread {
        @Override
        public void run() {
            System.out.println("开始wait");
            synchronized (lock) {
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("wait结束");
        }
    }

    public static void main(String[] args) throws InterruptedException {
        Thread0 t0 = new Thread0();
        Thread1 t1 = new Thread1();
        t1.start();
        Thread.sleep(100);
        t0.start();
    }
}

正在回答 回答被采纳积分+3

1回答

悟空 2023-05-17 18:23:54
没区别,Thread是Object的子类
0 回复 有任何疑惑可以回复我~
  • 提问者 相信光变成光 #1
    既然没区别,为什么wait,notify,notifyAll定义在Object里面,而不是Thread里面??
    回复 有任何疑惑可以回复我~ 2023-05-19 15:16:47
  • 悟空 回复 提问者 相信光变成光 #2
    因为任何类都可以成为锁,不一定必须是Thread类
    回复 有任何疑惑可以回复我~ 2023-05-21 22:19:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信