目录
一:线程的状态
1:线程种类
BLOCKED:线程因为正在等待需要的锁而挂起执行。
NEW:线程还没开始运行。
BUNNABLE:线程要么当前正在执行,要么在获得CPU的访问权之后执行。
TERMINATED:线程已经完成执行。
TIMED_WAITING:线程挂起执行一段指定的时间。
WAITING:线程因为等待某些动作而挂起执行。
(注:是根据Thread)
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
2:如何获取线程的状态
通过Thread类定义的getState()方法类获取线程的当前状态,Thread.State getState(),该方法返回Thread.State
类型的值,指示在调用该方法是线程所处的状态。State是由Thread类定义的枚举类型。
getState()可以返回的值。
二:线程间的通信
三:线程优先级
1:每个线程都有优先级。
2:线程优先级是什么?
线程优先级是一个整数,指定了一个线程相对于另一个线程的优先程度。
3:线程优先级用于决定何时从一个运行的线程切换到下一个。(称为上下文切换)
线程调度程序的根据线程优先级决定每个想成应当何时运行。
优先级更高的线程比优先级更低的线程会获得更多的CPU时间。
4:设置线程的优先级:
(1)需要使用setPriority()方法,这个方法是Thread类的成员。
final void serPriority(int newPriority) newPriority:指定了为调用线程设置的新优先级。
(2)设置优先级的源码
public final void setPriority(int newPriority) {
ThreadGroup g;
checkAccess();
if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) {
throw new IllegalArgumentException();
}
if((g = getThreadGroup()) != null) {
if (newPriority > g.getMaxPriority()) {
newPriority = g.getMaxPriority();
}
setPriority0(priority = newPriority);
}
}
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
5:如何得到线程优先级
使用getPriority()方法获取当前设置的优先级。这个方法是Thread类的成员方法final int getPriority()