写这篇博文,无他,就是在看java线程知识时,感觉一些知识点,必须背下,所以就自己复述一下,写了下来。
在同步中,需要对含有同步代码的对象进行锁定。
先介绍两个类的一些重要方法:
(Object) wait 方法,作用:使执行该对象的线程进入该对象的等待队列中。
@throw InterrupedException cause 当执行该对象的线程没有获得该对象的锁时抛出
notes: 而当该线程调用了该方法,则会放弃原先获得该对象的锁。(这是一些线程面试,笔试题经常要考的。注意区别该对象,与执行该对象的线程)
notify ,notifyAll 方法, 作用:唤醒该对象上的等待线程,一般,与wait配对使用。
note: 调用该方法时,如果执行该方法的线程有获得该对象的锁,则不会放弃它的锁。
(Thread) 静态方法:sleep ,作用:使该线程(sleep方法,所属的线程),进入睡眠状态(即,“阻塞”状态,线程五态中的一种:新建,可运行态,运行中,阻塞状态,死亡态)。
@throw InterrupedException
notes: 当该方法被调用时,已在该线程对象(注意,因为它是Thread的方法,实现线程很大一部分,得继承Thread类,所以它是线程对象)上锁,不会被释放,将会继续保持。
yield,作用: 使该线程进入可运行态(一般,是从运行态,转变到可运行态)。
note:: 同样,线程将同样保持锁。
final 方法: join, 作用:使当前在执行该行代码(即调用了这个方法的线程)加入到这个方法所属的线程的尾部,直到这个方法所属的线程执行完,才可以执行。
@throw: InterrupedException
note: 同样,线程将同样保持锁。
setPriority(int priorityInt) ,作用:设置当前线程的优先级。