首页 > 试题广场 >

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

[不定项选择题]
下列关于线程调度的叙述中,错误的是()。
  • 调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会
  • 调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会
  • 当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行
  • 一个线程由于某些原因进入阻塞状态,会放弃CPU
  • 具有相同优先级的多个线程的调度一定是分时的
  • 分时调度模型是让所有线程轮流获得CPU使用权
答案:BE
不明白单选为啥有两个错。
B    yeild()会给优先 级相同的或者比自己高的线程运行的机会。
E    在批处理操作系统中并不存在分时调度。
编辑于 2017-08-16 14:41:38 回复(6)
yst头像 yst
yield()方***使比当前进程优先级高的进程或优先级相同的进程提供运行的机会,slssp()方***给其他任何线程提供运行的机会,不论优先级高低均可以。
发表于 2015-07-03 19:45:29 回复(0)
答:E
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)可 以设置阻塞的时间
编辑于 2015-04-01 17:51:41 回复(5)
其他的大家都分析了,说说C选项。当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行。这个在没有基于优先级抢占的系统里面是错误的,因为不存在抢占。在有基于优先级抢占的系统里面是对的。但是现在的系统基本都是有基于优先级抢占的,不抢占的那只是出现在课本里。
发表于 2015-07-27 20:29:36 回复(5)
不明白为什么C也能正确,如果不支持抢占方式呢?哎
发表于 2015-08-09 17:29:29 回复(4)
具有相同优先级的多个线程的调度一定是分时的,这句话不对,因为对于批处理系统不存在分时操作。
发表于 2016-07-12 20:04:32 回复(0)
B:yeild()使当前线程进入就绪队列。给相同优先级或者高优先级线程机会。
发表于 2016-02-21 14:22:36 回复(3)
为什么调用sleep会放弃cpu呢?调用sleep不是会占着资源睡觉么
发表于 2015-08-21 17:34:37 回复(1)
sleep的时候 让出cpu 但不会让出锁资源
发表于 2022-06-19 19:33:56 回复(0)
C
发表于 2015-01-12 14:06:45 回复(0)
编辑于 2023-07-21 10:54:40 回复(0)
sleep不会释放锁,但是会释放CPU资源
发表于 2022-10-18 11:27:32 回复(0)
非抢占调度,优先级可以用于确定时间片长度。
发表于 2021-12-21 00:14:54 回复(0)
看成正确的了……
发表于 2021-04-24 01:15:39 回复(0)

yeild方法让优先级比当前线程高的线程获得运行机会

编辑于 2020-03-08 08:10:15 回复(0)
A为什么没错,sleep在java里没有放弃锁呀?难道其他语言有sleep?还放弃锁了?
发表于 2018-01-29 23:25:38 回复(0)
不是说用户线程不接受CPU调度吗,那F选项调度的至少是内核线程吧,但题目没说这里的线程是内核线程还是用户线程,反正从A,B选项让人以为说的是用户线程
发表于 2016-08-10 20:05:48 回复(0)
C为什么是对的?就算是抢占系统,优先级高的线程也只是以一定概率进行抢占,   抢占并不是一定发生的。
发表于 2016-07-21 15:18:15 回复(0)
B书上有原话啊“该方法与sleep()类似,只是不能由用户指定暂停多长时间,并且yield()方法只能让同优先级的线程有执行的机会。
发表于 2016-06-20 21:52:50 回复(0)
http://www.nowcoder.com/questionTerminal/fb0bd11569204cbc833a5c8b996636ba 这题的D 说高优先级的线程就绪不会导致当前线程停止,C的说法太扯淡了
发表于 2015-09-06 15:27:39 回复(0)