天天看点

并发编程3-线程调度

并发编程3-线程调度

方法说明:

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生产,有商品就消费,同时通知生产者可以继续生产了。

继续阅读