notify();//这样一定是表示要唤醒Output吗?如果是超过两个线程怎么识别是唤醒谁??不在notify中加标记来说明是哪个线程被唤醒吗?
因为你的Input类和Output用的都是同一个锁,即r
所以notify()会唤醒第一个线程池中在等待的线程.
这样如果有多个线程的话,会造成死锁,所以要使用notifyAll();这个函数.
synchronized(r)//对象是不是可以是资源和类.class、this?还有什么吗?锁是任意对象,真的是其他的任意对象都可以吗?
是的,非静态函数的锁可以是任意的对象.
静态锁就只能用本类的类对象,就是Class的对象. |