方法说明:
run 线程运行的主体
yield() 放弃当前的时间片进入可运行状态,可以被再次选中
start() 线程进入可运行阶段
sleep(), 阻塞一定的时间,会持有锁
t2.join() 等待t2线程运行结束,会持有锁,有可能会死锁
wait() 锁对象的方法,持有锁对象的线程释放锁,进入阻塞队列等待notify
notify() 锁对象的方法,唤醒一个该锁对象阻塞队列中的线程
notifyall() 锁对象的方法,唤醒所有该锁对象阻塞队列中的线程
会打印:
thread1
thread0
如果把其中的sc.notify()换为notifyall()则会打印出所有的线程。
在阻塞的方法比如wait() 或者sleep()中会有while(interruped()) throws interruptedexception()方法,
interrupt()方法会设置状态为打断状态
interrupted()方法如果是打断状态返回true,同时设置打断状态为false;
一个线程生产,一个线程消费。
生产超出上限则wait消费,没超出则进行生产,开始生产了就应该通知消费者可以消费了。
消费线程没有商品则wait生产,有商品就消费,同时通知生产者可以继续生产了。