线程的礼让是指先将资源让出去让别的线程先执行。线程的礼让可以使用Thread中提供的方法:
范例:没使用礼让的操作
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 条评论) |