码迷,mamicode.com
首页 > 编程语言 > 详细

线程优先级概述

时间:2016-04-12 15:54:43      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

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

技术分享

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()对线程栈导致的结果是线程栈发生了变化,当然这些变化都是瞬时的。下面给示意图:

技术分享

线程优先级概述

标签:

原文地址:http://www.cnblogs.com/DivineHost/p/5382843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!