java线程:sleep方法的使用

本文介绍了Java中Thread.sleep()方法的使用,用于使线程休眠指定毫秒数,以及在单线程和多线程环境下的执行效果。通过示例代码展示了线程交替执行的情况,解释了输出结果中并非每条输出间隔1秒的原因。
摘要由CSDN通过智能技术生成

sleep方法的使用

Thread类的方法 public static void sleep(long millis)
作用:在指定的毫秒数内让正在执行的线程休眠(暂停执行)
参数为休眠的时间,单位是毫秒

一个线程,使用sleep方法:

package java_thread;

class MyThread1 implements Runnable {
    @Override
    public void run() {
        for(int i=0; i<15 ; i++){
            System.out.println(Thread.currentThread().getName() + "执行第" + i + "次!");
            //使用try-catch,当被中断时抛出异常
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }  
    }
}
public class SleepDemo {
    public static void main(String[] args) {
        MyThread1 mt = new MyThread1();
        Thread t = new Thread(mt);
        t.start();
    }
}

输出:

Thread-0执行第0次!
Thread-0执行第2次!
Thread-0执行第3次!
Thread-0执行第4次!
Thread-0执行第5次!
Thread-0执行第6次!
Thread-0执行第7次!
Thread-0执行第8次!
Thread-0执行第9次!
Thread-0执行第10次!
Thread-0执行第11次!
Thread-0执行第12次!
Thread-0执行第13次!
Thread-0执行第14次!

通过观察输出结果,可以看到每条输出之间间隔几乎1s的时间。

当使用多个线程:

public class SleepDemo {
    public static void main(String[] args) {
        MyThread1 mt = new MyThread1();
        Thread t = new Thread(mt);
        t.start();

        Thread t1 = new Thread(mt);
        t1.start();
    }
}

输出:

Thread-1执行第0次!
Thread-0执行第0次!
Thread-1执行第1次!
Thread-0执行第1次!
Thread-1执行第2次!
Thread-0执行第2次!
Thread-1执行第3次!
Thread-0执行第3次!
Thread-1执行第4次!
Thread-0执行第4次!
Thread-1执行第5次!
Thread-0执行第5次!
Thread-1执行第6次!
Thread-0执行第6次!
Thread-1执行第7次!
Thread-0执行第7次!
Thread-1执行第8次!
Thread-0执行第8次!
Thread-1执行第9次!
Thread-0执行第9次!
Thread-1执行第10次!
Thread-0执行第10次!
Thread-1执行第11次!
Thread-0执行第11次!
Thread-1执行第12次!
Thread-0执行第12次!
Thread-1执行第13次!
Thread-0执行第13次!
Thread-1执行第14次!
Thread-0执行第14次!

通过观察,可以看到并不是每条输出之间间隔1s,那是因为,当线程0执行完一条语句进入休眠时,线程1就会获取cpu的使用权,当线程1执行完后,线程0的休眠时间可能就到了,所以形成了这种交替执行的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值