Java 多线程 (PART V) yield()方法

23 篇文章 0 订阅
23 篇文章 1 订阅

yield()方法

功能:

让线程放弃当前的CPU资源,让其他的任务去占用CPU的执行时间。
注:放弃的时间不确定,可能刚刚放弃,马上又获得CPU时间片

示例代码:
package a;

class YieldThread extends Thread{

    @Override
    public void run() {
        long beginTime=System.currentTimeMillis();
        int count=0;
        for(int i=0;i<50000000;i++) {
            //Thread.yield();
            count=count+(i+1);

        }
        long endTime=System.currentTimeMillis();
        System.out.println("用时:"+(endTime-beginTime)+" 毫秒!");
    }

}
public class YieldTest {

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

}
运行结果:
**用时:23 毫秒!**
稍作修改:

将run()方法修改为:

public void run() {
        long beginTime=System.currentTimeMillis();
        int count=0;
        for(int i=0;i<50000000;i++) {
            Thread.yield();
            count=count+(i+1);

        }
        long endTime=System.currentTimeMillis();
        System.out.println("用时:"+(endTime-beginTime)+" 毫秒!");
    }
运行结果:
  **用时:4193 毫秒!**
结果分析:

在线程run()方法体中,添加了一行yield()方法,此时线程会放弃CPU资源,让其他的线程去占用CPU资源,于是两次运行的时间相差非常多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值