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

多线程Java

 

 

线程合并

/*

* 线程合并

* 1. 调用join()方法完成线程合并。

* 2. join()方法是一个实例方法。(不是静态方法)t.join

* 3. 假设在main方法(main线程)中调用了 t.join(),后果是什么?
*    t线程合并到主线程中。主线程进入阻塞状态。直到 t 线程执行结束。主线程阻塞解除。

* 4. t.join()方法其实是让当前线程进入阻塞状态,直到t线程结束,当前线程阻塞解除。


* 5. 和sleep方法有点类似,但不一样:
*    第一:sleep方法是静态方法,join是实例方法。
*    第二:sleep方法可以指定睡眠的时长,join方法不能保证阻塞的时长。
*    第三:sleep和join方法都是让当前线程进入阻塞状态。
*    第四:sleep方法的阻塞解除条件?时间过去了。 join方法的阻塞解除条件?调用join方法的那个线程结束了。
*/

 

*     - sleep(毫秒) 可精确指定“线程阻塞多久后自动唤醒”;  
*     - join() 无法主动指定阻塞时长,完全依赖“被调用线程(如 t )何时执行完毕” 。若 t 线程执行耗时不确定(如处理大数据),join 的阻塞时长也不确定。  
*  3. 阻塞触发的本质:  
*     - 两者都会让「当前线程」进入阻塞状态,但触发阻塞的条件不同:  
*       → sleep:到达指定时间后,线程自动解除阻塞;  
*       → join:被调用的目标线程(如 t )执行完毕后,当前线程才会解除阻塞。

 

 

线程让位

yield()  方法是静态的,因此直接通过  Thread  类名来调用,不需要创建  Thread  实例。

2. 作用原理

 当一个线程调用  yield()  方法时,它会主动放弃当前剩余的 CPU 执行时间片,将自己的状态从运行状态切换到可运行状态(就绪状态),然后重新进入线程调度队列,等待系统再次分配 CPU 时间片来执行。

与  sleep()  方法的区别

- 阻塞性质: yield()  方法不会使线程进入阻塞状态,只是让线程回到就绪状态;

而  sleep()  方法会使线程进入阻塞状态,在指定的时间内不会参与 CPU 调度。

- 执行时间控制: yield()  方法无法控制具体的让出 CPU 执行权的时间;

   sleep()  方法可以精确指定线程阻塞的时间长度。

- 线程优先级影响: yield()  方法主要影响同优先级的线程; 

 sleep()  方法对线程优先级没有这种影响,在睡眠结束后,线程会根据其优先级参与 CPU 调度。

http://www.dtcms.com/a/274541.html

相关文章:

  • Leaflet面试题及答案(1-20)
  • 《汇编语言:基于X86处理器》第7章 整数运算(2)
  • Ubuntu 22.04 Server 虚拟机初始化配置与优化指南
  • 用Python制作抖音风格短视频:从图片到精美视频的完整指南
  • docker-compose安装常用中间件
  • AI产品经理面试宝典第7天:核心算法面试题-上
  • VS 按F12 提示cannot navigate to the symbol under the caret
  • JavaSE——Object
  • 【实时Linux实战系列】现有应用迁移到实时环境的步骤
  • Web安全-Linux基础-01-初识Linux
  • 进程状态 + 进程优先级切换调度-进程概念(5)
  • 小智AI模型接入MCP
  • 【C++】内联函数inline以及 C++入门(4)
  • 【Linux】C++项目分层架构:核心三层与关键辅助
  • 构建一个简单的有监督的异常点检测项目
  • 如何让FastAPI与Celery完美联姻,打造高效异步任务处理系统?
  • 灰盒级SOA测试工具Parasoft SOAtest重新定义端到端测试
  • uniapp制作一个视频播放页面
  • 软件测试之单元测试
  • 【Luogu】每日一题——Day1. P3385 【模板】负环
  • 功能测试知识总结
  • 盲超分的核心概念
  • 飞书AI,正在成为零售企业的“靠谱辅助”
  • 用 ELK+Filebeat 提高50%问题排查效率,这套方案实测有效!
  • Spring MVC中异常处理
  • Visual Studio 2022 上使用ffmpeg
  • C语言/Keil的register修饰符
  • 【Freertos实战】零基础制作基于stm32的物联网温湿度检测(教程非常简易)持续更新中.........
  • SwiftUI的页面生命周期
  • 鸿蒙系统安全机制全解:安全启动 + 沙箱 + 动态权限实战落地指南