这个
private static Integer state = 0;
相当于
private static Integer state = Integer.valueOf(0);
调用会
valueOf(0)返回对
Integer对象的引用,称为A。
然后你做
synchronized(state) {
您的线程获取对引用的对象的锁
state,当前为A。
然后你做
state = 1;
相当于
state = Integer.valueOf(1);
它为您提供了对
Integer对象的不同引用,将其称为B,然后将其分配给
state。当您再致电时
state.notify();
您正在调用
notify()对象B,该对象的线程不拥有监视器。您不能调用
notify或
wait在线程不拥有监视器的对象上进行调用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)