线程礼让

阅读: 评论:0

线程礼让

线程礼让

线程礼让

线程的礼让是指先将资源让出去让别的线程先执行。线程的礼让可以使用Thread中提供的方法:

  • 礼让:public static void  yield();

范例:没使用礼让的操作

package multithreading;public class Comity {public static void main(String[] args) throws InterruptedException {Thread thread = new Thread(()->{for (int i = 0; i < 20; i++) {try { Thread.sleep(500);    //线程休眠} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}System.out.println(Thread.currentThread().getName()+ "执行、i = "+i);}},"线程对象");thread.start();for(int x = 0;x < 20;x++) {Thread.sleep(500);System.out.println("【main线程】 x =" + x);	}}
}

【main线程】 x =0
线程对象执行、i = 0
线程对象执行、i = 1
【main线程】 x =1
线程对象执行、i = 2
【main线程】 x =2
【main线程】 x =3
线程对象执行、i = 3
【main线程】 x =4
线程对象执行、i = 4
线程对象执行、i = 5
【main线程】 x =5
【main线程】 x =6
线程对象执行、i = 6
线程对象执行、i = 7
【main线程】 x =7
线程对象执行、i = 8
【main线程】 x =8
线程对象执行、i = 9
【main线程】 x =9
线程对象执行、i = 10
【main线程】 x =10
线程对象执行、i = 11
【main线程】 x =11
线程对象执行、i = 12
【main线程】 x =12
线程对象执行、i = 13
【main线程】 x =13
线程对象执行、i = 14
【main线程】 x =14
线程对象执行、i = 15
【main线程】 x =15
线程对象执行、i = 16
【main线程】 x =16
线程对象执行、i = 17
【main线程】 x =17
线程对象执行、i = 18
【main线程】 x =18
线程对象执行、i = 19
【main线程】 x =19

范例:使用礼让的操作

package multithreading;public class Comity {public static void main(String[] args) throws InterruptedException {Thread thread = new Thread(()->{for (int i = 0; i < 20; i++) {if(i % 3 == 0) {Thread.yield();//线程礼让,让其他抢占同一资源的线程先执行System.out.println("。。。线程礼让。。。");}try {Thread.sleep(500);} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}System.out.println(Thread.currentThread().getName()+ "执行、i = "+i);}},"线程对象");thread.start();for(int x = 0;x < 20;x++) {Thread.sleep(500);System.out.println("【main线程】 x =" + x);	}}
}

 。。。线程礼让。。。
【main线程】 x =0
线程对象执行、i = 0
【main线程】 x =1
线程对象执行、i = 1
【main线程】 x =2
线程对象执行、i = 2
。。。线程礼让。。。
【main线程】 x =3
线程对象执行、i = 3
【main线程】 x =4
线程对象执行、i = 4
【main线程】 x =5
线程对象执行、i = 5
。。。线程礼让。。。
【main线程】 x =6
线程对象执行、i = 6
线程对象执行、i = 7
【main线程】 x =7
【main线程】 x =8
线程对象执行、i = 8
。。。线程礼让。。。
【main线程】 x =9
线程对象执行、i = 9

...

礼让执行的时候每一次调用yield()方法都只会礼让一次当前的资源。

本文发布于:2024-02-05 00:01:53,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170719407260962.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线程
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23