Java并发(二)常用方法01之sleep()和yield()

一.sleep()

  1. Thread.sleep()是Thread类的一个静态方法,使当前线程休眠,进入阻塞状态(暂停执行),如果线程在睡眠状态被中断,将会抛出IterruptedException中断异常。
    public static void main(String[] args) {
        Runnable task=()->{
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                System.out.println("我被中断了!!!");
                e.printStackTrace();
            }
        };
        Thread thread=new Thread(task);
        thread.start();//开启线程
        try
        {
            Thread.sleep(1000);
        }
        catch (InterruptedException e)
        {

        }
        thread.interrupt();//中断该线程

    }

在这里插入图片描述
2. 线程睡眠到期自动苏醒,并返回到可运行状态(就绪),当获得cpu执行权时,才进入运行态。

二.yield()

  1. Thread.yield()是Thread类的一个静态方法,译为线程让步。就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。举个例子:一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车,有可能是其他人先上车了,也有可能是Yield先上车了。
  2. yield()和sleep()的区别在于,线程调用yield()后,线程状态由运行态转为就绪态,当线程进入就绪态后,它可能会立即获得cpu执行权,然后再次进入运行态。而线程调用sleep()后,线程由运行态转为阻塞态,当线程进入阻塞态后,它必须等sleep的时间过后才能进入就绪态,然后再可能获得cpu执行权,进入运行态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值