当前位置: 首页 > news >正文

Java并发编程12

1、如何让正在运行的线程暂停一段时间

我们可以使用 Thread 类的 Sleep()方法让线程暂停一段时间。需要注意的是,这并不会让线程终止,一旦从休眠中唤醒线程,线程的状态将会被改变为 Runnable,并且根据线程调度,它将得到执行。

2、你对线程优先级的理解是什么

每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的(OS dependent)。我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个 int 变量(从 1-10),1 代表最低优先级,10 代表最高优先级。

java 的线程优先级调度会委托给操作系统去处理,所以与具体的操作系统优先级有关,如非特别需要,一般无需设置线程优先级。

3、什么是线程调度器(Thread Scheduler)和时间分片(TimeSlicing )

线程调度器是一个操作系统服务,它负责为 Runnable 状态的线程分配 CPU 时间。一旦我们创建一个线程并启动它,它的执行便依赖于线程调度器的实现。

同上一个问题,线程调度并不受到 Java 虚拟机控制,所以由应用程序来控制它是更好的选择(也就是说不要让你的程序依赖于线程的优先级)。

时间分片是指将可用的 CPU 时间分配给可用的 Runnable 线程的过程。分配 CPU时间可以基于线程优先级或者线程等待的时间。

4、你如何确保 main()方法所在的线程是 Java 程序最后结束的线程?

我们可以使用 Thread 类的 join()方法来确保所有程序创建的线程在 main()方法退出前结束。

5、线程之间是如何通信的

当线程间是可以共享资源时,线程间通信是协调它们的重要的手段。Object 类中wait()\notify()\notifyAll()方法可以用于线程间通信关于资源的锁的状态。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • es 7.17.23安装ik插件启动失败,access denied,Permission
  • uniapp开发微信小程序调用微信支付
  • 宠物空气净化器吸猫毛有用吗?希喂、美的、霍尼韦尔三款亲测分享
  • C++类和对象(3)——this指针
  • Redis中的缓存穿透、缓存击穿、缓存雪崩(面试版)
  • matlab 创建复数数组
  • SQL典型练习题
  • 云渲染解决:笔记本渲染很伤电脑吗?如何保护你的电脑?
  • 【计算机组成原理】2.2.6 数据的存储和排列
  • Linux Ubuntu 桌面环境概览
  • 【视频讲解】主成分分析原理与水果成熟数据实例:Python中PCA-LDA 与卷积神经网络CNN...
  • OpenAI 将向企业开放 GPT-4o 模型定制版
  • SQL进阶技巧:如何按任意时段分析时间区间问题? | 分区间讨论【左、中、右】
  • 汽车小程序怎么做 汽车服务小程序系统开发制作方法
  • python自动化脚本:让工作自动化起来
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2019.2.20 c++ 知识梳理
  • Angular 4.x 动态创建组件
  • Angular4 模板式表单用法以及验证
  • AngularJS指令开发(1)——参数详解
  • Brief introduction of how to 'Call, Apply and Bind'
  • CentOS从零开始部署Nodejs项目
  • JavaScript设计模式之工厂模式
  • Making An Indicator With Pure CSS
  • React as a UI Runtime(五、列表)
  • 实战|智能家居行业移动应用性能分析
  • 数组大概知多少
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 小程序开发之路(一)
  • 最近的计划
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (1)常见O(n^2)排序算法解析
  • (175)FPGA门控时钟技术
  • (9)STL算法之逆转旋转
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (全注解开发)学习Spring-MVC的第三天
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一一四)第九章编程练习
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (轉)JSON.stringify 语法实例讲解
  • ****Linux下Mysql的安装和配置
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .DFS.
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Standard 的管理策略
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰