有关线程调度问题

有关线程调度问题

下列关于线程调度的叙述中,错误的是:( E )

A. 调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会

B. 调用线程的yield()方法,只会使与当前线程相同优先级的线程获得运行机会

C. 当有比当前线程优先级高的线程出现时,高优先级的线程将抢占CPU并运行

D. 一个线程由于某些原因进入阻塞状态,会放弃CPU

E.具有相同优先级的多个线程的调度一定是分时的

F.分时调度模型是让所有线程轮流获得CPU使用权

解析:

yield()暂时交出cpu控制权,从running状态转为runnalbe状态,但是仍有可能被调度,sleep()线程指定休眠一段时间

wait()在其他线程调用此对象的notify()、notifyAll()方法时才能继续执行

线程中sleep()方法和yeild()方法的主要区别:

1.sleep()方法会给其他线程运行的机会,而不管其他线程的优先级,因此会给较低优先级的线程运行的机会;

yeild()方法只会给优先级相同的或者比自己高的线程运行的机会

2.sleep()方法声明抛出InterruptionException异常,而yeild()方法没有声明抛出任何异常

3.sleep()方法比yeild()方法具有更高的可移植性

4.sleep()方法使线程进入阻塞状态yeild()方法使线程进入就绪状态当前运行的线程可以调用另一个线程的join()方法,当前运行的线程将转到阻塞状态直到另一个线程运行结束,它才会恢复运行 

join()有两种形式:public void join()和public void join(long timeout)可以设置阻塞的时间

sleep()方法进入阻塞状态,当有两个线程(线程1和线程2),线程1的优先级比线程2的优先级高,线程1sleep()则线程2可以获得运行机会

当有比当前线程优先级高的线程出现时,高优先级会抢占CPU并运行,yield()方法,暂停一段时间,且这段时间不确定,它会使与当前线程相同优先级的线程获得运行机会

具有相同优先级的多个线程调度不一定是分时的,多核CPU可能同时调。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值