博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关线程调度问题
阅读量:4305 次
发布时间:2019-05-27

本文共 910 字,大约阅读时间需要 3 分钟。

有关线程调度问题
下列关于线程调度的叙述中,错误的是:( D )
A. 调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会
B. 调用线程的yield()方法,只会使与当前线程相同优先级的线程获得运行机会
C. 当有比当前线程优先级高的线程出现时,高优先级的线程将抢占CPU并运行
D. 具有相同优先级的多个线程的调度一定是分时的.
E.一个线程由于某些原因进入阻塞状态,会放弃CPU
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可能同时调

转载地址:http://xgews.baihongyu.com/

你可能感兴趣的文章
已知子网掩码,确定ip地址范围
查看>>
判断时间或者数字是否连续
查看>>
docker-daemon.json各配置详解
查看>>
Docker(一)使用阿里云容器镜像服务
查看>>
Docker(二) 基础命令
查看>>
Docker(三) 构建镜像
查看>>
Spring 全家桶注解一览
查看>>
JDK1.8-Stream API使用
查看>>
cant connect to local MySQL server through socket /tmp/mysql.sock (2)
查看>>
vue中的状态管理 vuex store
查看>>
Maven之阿里云镜像仓库配置
查看>>
Maven:mirror和repository 区别
查看>>
微服务网关 Spring Cloud Gateway
查看>>
SpringCloud Feign的使用方式(一)
查看>>
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>