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

Java多线程详解(三)线程状态 3、线程礼让(yield)与线程强制执行(join)

Java多线程详解(三)线程状态

(1)线程状态的简要说明

(2)线程状态转换过程中常用的方法

(3)停止线程

(4)线程休眠

(5)线程礼让(yield)

  • 礼让线程,让当前正在执行的线程暂停,但不阻塞
  • 将线程从运行状态转为就绪状态
  • 让CPU重新调度,即重新加入就绪队列,礼让不一定成功,看CPU的调度策略
public class TestYield {public static void main(String[] args) {MyYield myYield = new MyYield();Thread thread1,thread2,thread3;thread1 = new Thread(myYield,"thread1");thread2 = new Thread(myYield,"thread2");thread3 = new Thread(myYield,"thread3");thread1.start();thread2.start();thread3.start();}}class  MyYield implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"线程开始执行");Thread.yield();//线程礼让System.out.println(Thread.currentThread().getName()+"线程停止执行");}
}

结果为:
在这里插入图片描述

(6)线程强制执行(join)

  • join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞(可以想象成插队)
public class TestJoin implements Runnable{@Overridepublic void run() {for (int i = 0; i < 1000; i++) {System.out.println("线程vip来了"+i);}}public static void main(String[] args) throws InterruptedException {//启动自己的线程TestJoin testJoin = new TestJoin();Thread thread = new Thread(testJoin);thread.start();//启动主线程for (int i = 0; i < 1000; i++) {if (i == 200){thread.join();//开始插队}System.out.println("main"+i);}}
}

结果如下:
在这里插入图片描述
可以发现,当主线程到达第200次循环时,VIP线程插队,从此之后,只有等VIP线程结束过后,主线程才能继续执行。


http://www.taodudu.cc/news/show-8457261.html

相关文章:

  • 狂神说Java笔记——Java多线程常用的操作方法(线程状态、停止、休眠、礼让、Join、优先级、守护)
  • 多线程笔记三(Java)
  • Java多线程详解(五)线程休眠|线程礼让|线程强制执行
  • 学习线程优先级,线程礼让,线程死锁
  • 多线程的方法:线程停止、线程休眠、线程礼让、线程强制执行
  • 三、线程状态
  • day22知识点总结:线程安全问题及解决方法 线程礼让
  • 线程休眠、中断、强制执行与礼让分析
  • 用java编写判断三角形_如何用java代码来做三角形的判断?
  • 线程的优先级、守护线程、礼让线程、插入线程、中断线程
  • Java多线程学习笔记(4)— “Thread类三个方法:线程休眠sleep()、线程礼让yield()、线程强制执行join()”
  • java多线程(三) —— Thread方法(休眠,礼让,强制执行,守护线程)
  • 多线程_10_礼让yield
  • yield() 初让线程(礼让线程)
  • 不礼让行人怎么抓拍的_权威发布:丹阳正式抓拍斑马线前不“礼让行人”,八张图告诉您如何正确礼让...
  • 苹果手机更改定位 - 爱思助手
  • 爱思助手“显示发送描述文件到设备失败”
  • 写一个python代码自动读取eⅹcle内容,把内容提交到网页
  • ACM MM 2023| CLE Diffusion:可控光照增强扩散模型(low light image enhancement)
  • App 的界面设计流程
  • Allegro16.6添加标注的方法
  • 老SDRAM和DDR SDRAM时序图与信号完整性仿真结合运用(2) -版本博客图片丢失,增加图片后又不能上传,shit.
  • 实战:内容营销如何吸引顾客 试试五个切入点
  • 关于外场测试的一点儿介绍
  • 笔记本用gpu运行tensorflow-gpu,keras写的老程序,结果与原来不一样,一脸懵逼。
  • 腾讯一面!说说ArrayList的遍历foreach与iterator时remove的区别,我一脸懵逼
  • 信心满满去面美团,结果被JVM9连问怼的一脸懵逼
  • 字节跳动面到这道题,有的读者一脸懵逼,有的读者笑嘻嘻
  • 初学网络安全一脸懵逼?看懂直接跪下!
  • 微信小程序app.json全局配置