线程的调度

来源:互联网 发布:北京赛车两期计划数据 编辑:程序博客网 时间:2024/06/07 02:43

Java虚拟机会按照特定的机制为程序中每个线程分配CPU的使用权,这种机制被称为线程的调度

线程的调度有两种模型:分时调度模型和抢占式调度模型。
分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片。
抢占式调度模型是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。

线程的优先级

0到10整数表示优先级。0最低,10最高。(UNIX刚好相反)。其中 public static final int MIN_PRIORITY = 1;
public static final int NORM_PRIORITY = 5;
public static final int MAX_PRIORITY = 10;

线程优先级可以用 setPriority(int newPriority)来改变。

线程的休眠

public static void sleep(longmillis) throws InterruptedException
public static void sleep(long millis,int nanos)throws InterruptedException
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。

线程的让步

public static void yield()
暂停当前正在执行的线程对象,并执行其他线程。

线程的插队

public final void join(long millis,int nanos)throws InterruptedException
等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。 若没有参数或者参数为0,表明要一直等下去

线程的通信

public final void wait(long timeout,int nanos)throws InterruptedException
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

public final void notify()
唤醒此同步锁上等待的第一个调用wait()的线程

public final void notifyAll()
唤醒此同步锁上调用wait()的所有线程

1 0
原创粉丝点击