线程优先级概述

线程的状态分为:新、可运行、等待/阻塞/睡眠、运行、死

clipboard

1、所谓的线程同事执行的背后含义。

线程的执行和操作系统cpu有关,当你的cpu是单核,其实是一个线程在执行,4核cpu是4个线程再执行。单核cpu执行时,在这个时间段,划分为多个时间片,单线程轮换执行每个时间片。由于运行速度快,可以看作是多线程同时执行。

2、Thread.sleep();

线程睡眠,让其它线程有机会执行,时间到期后自动苏醒,该线程变为可运行状态。(不能保证睡眠到期后就开始执行)

3、Thread.jiled();(线程的让步与优先级)

线程优先级为1~10的正整数,默认优先级为5。通过方法setPriority(5)来设置优先级别。在Thread中有三个常量定义了优先级的范围。最高Static int MAX_PRIORITY 最低MIN_PRIORITY 默认NORM_PRIORITY。

Thread.jiled()是做线程让步,它会从运行状态转到可运行状态让其它同(优先)级别的线程来执行。

(让步不会造成线程阻塞、等待、睡眠)(让步后可能cpu又选中当前线程,这样就导致让步失败,所以让步也可能没有效果)

4、对象.join();

保证当前线程停止执行,直到它加入的线程执行完毕。然而如果它加入的线程没有存活,那么它不需要停止。

另外,join()方法还有带超时限制的重载版本。 例如t.join(5000);则让线程等待5000毫秒,如果超过这个时间,则停止等待,变为可运行状态。线程的加入join()对线程栈导致的结果是线程栈发生了变化,当然这些变化都是瞬时的。下面给示意图:

300003_thumb

posted @ 2016-04-12 15:19  姩澕  阅读(437)  评论(0编辑  收藏  举报