黑马程序员——线程的调度

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一、线程调度概述

程序中,多个线程是并发执行的,某个线程若是想被执行,必须要得到CPU的使用权。Java虚拟机会按照特定的机制为程序中的每个线程分配执行权,这种机制就称为线程的调度。

调度的模型有两种,分别是分时调度模型和抢占式调度模型。Java虚拟机默认采用抢占式调度模型。

二、线程的优先级

线程的优先级用1~10之间的整数来表示,数字越大,优先级越高。除此之外,可以用Thread类中的三个静态常量表示线程优先级。

static int MAX_PRIORITY  高优先级 相当于10

static int MIN_PRIORITY  低优先级  相当于1

static int NORM_PRIORITY   普通优先级  相当于5

我们可以通过Tread类中的setPriority(int i)来为线程设置优先级。

三、线程休眠

使正在执行的线程暂停,我们可以使用静态方法sleep(long millis),该方法可以使线程休眠指定的时间数。这样其他线程就能获得执行机会了。

sleep(long millis)方法声明抛出InterruptedException异常,因此应该进行补货或者抛出。

调用方法为:Tread.sleep()

四、线程让步

线程让步可以用yield()方法来实现,该方法会使得正在运行的线程暂停,但是却不会阻塞该线程,他只是将线程转换成就绪状态,让系统重新调度一次。当某个线程调用yield方法之后,只有与当前线程优先级相同或者更高的线程才能获得执行机会。

调用方法为:Tread.yield()

五、线程插队

Thread类中提供了一个join()方法来实现插队的功能。当某个线程调用其他线程的join()方法时,调用的线程将被阻塞,直到被join()方法加入进来的线程执行完之后它才会继续执行。

调用方法:设thread1为某个需要被加入进来的线程,则在其他线程中调用

thread.join();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值