JAVA 线程调度

                                               Java的线程调度
                                                                                                                                                                                             ----------------------线程优先级、休眠、让步、插队


1、线程的优先级


线程的优先级用整数 1~~10表示,数字越大,优先级越高。

默认普通优先级为 5


No.

定   义

描   述

表示的常量

1

public static final int MIN_PRIORITY

最低优先级

1

2

public static final int NORM_PRIORITY

中等优先级,是线程的

默认优先级

5

3

public static final int MAX_PRIORITY

最高优先级

 

2、线程的休眠


使用静态方法sleep() ,可以使正在执行的线程进入休眠状态,即从  运行态  进入 阻塞态


sleep()可以无参 亦可以重载


sleep() 方法需要声明抛出InteruptedException 异常,中断异常


try{
     Thread.sleep(2000) //休眠2秒
}catch(InterruptedException e){
     e.printStackTRrace();
}


3、线程让步


使用yield() 方法可以实现线程的让步,和sleeep()方法相似,都可以让线程暂停


区别:yeild()方法不会阻塞该线程,它 让线程从 运行态进入就绪态


条件:

两个线程的优先级相同


调用该方法将CPU礼让给具有与当前线程相同优先级的线程。如Thread.currentThread( ).yield( ) ;

如果此类线程都不是Runnable状态,yield( )方法将什么也不做。


4、线程的插队


使用join() 方法。当某个线程调用其他线程的join() 方法时,调用的线程将被阻塞,直到被加入的线程完全完成后才会继续运行


     一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合,
           如:B.join( );   称A在运行期间联合了B。
           如果线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行。
           如果A准备联合的B线程已经结束,那么
    B.join()不会产生任何效果。











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值