java中的sleep和wait怎么使用

Java中的sleep和wait怎么使用

在Java中,sleep和wait都是用于控制线程执行的关键字,它们可以让当前线程暂停一段时间,让其他线程有机会执行,下面我们分别介绍这两个方法的使用。

创新互联服务项目包括灵武网站建设、灵武网站制作、灵武网页制作以及灵武网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,灵武网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到灵武省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1、sleep方法

sleep方法是Thread类的一个静态方法,它可以让当前线程暂停指定的时间(以毫秒为单位),当时间到达后,线程会自动恢复执行,这个方法通常用于让线程暂停一段时间,以便给其他线程执行的机会。

语法:

public static void sleep(long millis) throws InterruptedException;

参数:

millis:需要暂停的时间,以毫秒为单位。

示例代码:

public class SleepDemo {
    public static void main(String[] args) {
        System.out.println("程序开始执行");
        try {
            Thread.sleep(3000); // 让当前线程暂停3秒(3000毫秒)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("程序恢复执行");
    }
}

2、wait方法

wait方法是Object类的一个实例方法,它可以让当前线程等待,直到其他线程调用此对象的notify()或notifyAll()方法,当另一个线程调用这些方法时,当前线程会被唤醒并继续执行,wait方法通常用于等待某个条件成立,例如等待一个线程完成任务。

语法:

public synchronized void wait() throws InterruptedException;
public synchronized void wait(long timeout) throws InterruptedException;
public synchronized void wait(long timeout, int nanos) throws InterruptedException;

参数:

timeout:等待的最长时间,以毫秒为单位,如果设置为-1,则表示无限期等待。

nanos:可选参数,表示等待的最短时间内的纳秒数,如果设置为-1,则表示使用默认值。

示例代码:

public class WaitDemo {
    public static void main(String[] args) {
        Object lock = new Object();
        Thread thread1 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("线程1开始执行");
                try {
                    lock.wait(); // 让当前线程等待,直到其他线程调用notify()或notifyAll()方法
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    System.out.println("线程1结束执行");
                }
            }
        });
        Thread thread2 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("线程2开始执行");
                try {
                    Thread.sleep(1000); // 让当前线程暂停1秒(1000毫秒)
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    System.out.println("线程2通知线程1可以继续执行");
                    lock.notify(); // 唤醒等待的线程1
                }
            }
        });
        thread1.start(); // 启动线程1
        thread2.start(); // 启动线程2,并在1秒后通知线程1可以继续执行
    }
}

相关问题与解答

1、为什么使用sleep和wait而不是其他方法?它们有什么优势?

文章题目:java中的sleep和wait怎么使用
转载源于:http://www.36103.cn/qtweb/news5/18305.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联