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()也是可以直接使用的

祝学习愉快~

0

0 学习 · 9886 问题

查看课程