notifyAll可以直接调用是为什么?
来源:5-1 线程间通信
做条咸鱼才最好
2021-08-19 21:47:21
package com.zzh.queue;
public class Queue {
private int n;
boolean flag=false;
public synchronized int get() {
if(!flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
System.out.println("消费:"+n);
flag=false;//消费完毕,容器中没有数据
notifyAll();
return n;
}
public synchronized void set(int n) {
if(flag) {
try {
wait();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
System.out.println("生产"+n);
this.n = n;
flag=true;//生产完毕,容器中已经有数据
notifyAll();
}
}
为什么notifyAll方法不需要对象可以直接调用?这是final方法吗?
1回答
好帮手慕阿园
2021-08-20
同学你好,该方法是final修饰的,因为notiftAll()是Object类的方法,Object是所有类的父类,所以Object类的方法可以直接使用,同理wait()也是可以直接使用的
祝学习愉快~
相似问题