Java笔记-Java基础(多线程)
?
wait与notify方法都是定义在Object类中,而且是final的,因此会被所有Java类所继承,并且无法重写
这两个方法要求在调用时线程应该已经获得了对象的锁,因此对这两个方法的调用需要放在synchronized方法或块当中。
当线程调用了wait方法时,会释放掉对象的锁
当另外的线程调用了notify,notifyAll方法时,会唤醒处于wait状态状态的线程
?
生产者,消费者
哲学家就餐问题
死锁
?
*wait必须在synchronized代码块中调用,调用wait方法后会释放锁
另外线程调用notify或notifyAll方法会唤醒wait的线程,等到再次获得锁的时候恢复运行
*使用while进行条件 和 使用if进行条件判断比较
?
2)sleep也是会导致线程暂停的方法
定义在Thread类中
?
*sleep方法会导致线程睡眠指定的毫秒数
线程在睡眠的过程中是不会释放掉对象的锁的
?
*调用wait方法后,如果不调用nofity,notifyAll,将永远不会被唤醒
sleep在睡眠指定时间后,会自动醒来
以上两点是sleep和wait的区别
?
10.线程组
所有线程都隶属于一个线程组。可以是一个默认的线程组,也可以是一个创建线程时明确指定的组。
?
*在创建之初,线程被限制在一个组里,而且不可能改变到一个不同的组
*若创建多个线程而不指定一个组,他们会与创建它的线程属于同一个组
?
?
?
?
?
?