在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.shufengxianlan.com/qtweb/news24/143924.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联