sleep与yield

yield

public static void yield()
暂停当前正在执行的线程对象,并执行其他线程。


sleep

public static void sleep(long millis)
                  throws InterruptedException
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。

参数:

millis - 以毫秒为单位的休眠时间。


package com.icss.biz.ppt;


/**
 * yield: 暂停当前正在执行的线程对象,并执行其他线程
 * @author xiaohp
 *
 */
public class YieldThread implements Runnable{
private Integer x=0;

@SuppressWarnings("static-access")
public void run() {
for(int i=0;i<50;i++){
       Thread.currentThread().yield(); //注释此句,其它线程可能无法抢入,如果注释掉就可能是
System.out.println("线程ID" + Thread.currentThread().getId()+" :x="+x);
x++;
}

}

public static void main(String[] args) {
YieldThread yt = new YieldThread();
new Thread(yt).start();
new Thread(yt).start();
}

}

Thread.currentThread().yield(); //注释此句,其它线程可能无法抢入,如果注释掉就可能是一个线程抢夺了资源一直占用,但是去掉注释后就是2个线程差不多平均分配

而sleep是让一个线程等一会,不会被其他线程抢去资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值