您现在的位置是:课程教程文章
java sleep()和wait()的区别
2023-12-14 21:08课程教程文章 人已围观
-
Javascript时钟案例丨WEB前端丨HTML入门丨C
Javascript时钟案例丨WEB前端丨HTML入门丨C关注微信公众号平台:“CGWANG实训中心” 全球的CG爱好者都在这里,行业新闻齐... -
疫情物资商城疫情数据采集显示系统 Ja
疫情物资商城疫情数据采集显示系统 Ja开发概要 开发环境:JDK1.8 + Tomcat8 开发语言:Java 开发框架:springboot 模板引擎... -
Java大神之路(第四季 JavaWeb)
Java大神之路(第四季 JavaWeb)... -
【千锋教育】史上最经典JavaEE精讲之Spr
【千锋教育】史上最经典JavaEE精讲之SprSpring介绍: Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和...
区别说明
1、wait()是Object的方法,sleep()是Thread的方法。
2、wait()必须采用同步方法,不需要sleep()方法。
3、线程在同步方法中执行sleep()方法,不释放monitor锁,wait()方法释放monitor锁。
短暂休眠后,sleep()方法会主动退出阻塞,而wait()方法需要在没有指定wait时间的情况下被其他线程中断才能退出阻塞。
实例
import java.text.SimpleDateFormat; import java.util.Date; public class TestSleepAndWait { public static void main(String[] args) { new Thread1().start(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } new Thread2().start(); } } class Thread1 extends Thread{ private void sout(String s){ System.out.println(s+" "+new SimpleDateFormat("HH:mm:ss:SS").format(new Date())); } @Override public void run() { sout("enter Thread1.run"); synchronized (TestSleepAndWait.class){//wait只能在同步代码块或者同步方法中使用 sout("Thread1 is going to wait"); try { TestSleepAndWait.class.wait(); // 这里只能使用持有锁TestSleepAndWait.class.wait(),使用其他对象则报错java.lang.IllegalMonitorStateException } catch (InterruptedException e) { e.printStackTrace(); } sout("after waiting, thread1 is going on"); sout("thread1 is over"); } } } class Thread2 extends Thread{ private void sout(String s){ System.out.println(s+" "+new SimpleDateFormat("HH:mm:ss:SS").format(new Date())); } @Override public void run() { sout("enter Thread2.run"); synchronized (TestSleepAndWait.class){//wait只能在同步代码块或者同步方法中使用 sout("Thread2 is going to notify"); TestSleepAndWait.class.notify(); 这里只能使用持有锁TestSleepAndWait.class sout("thread2 is going to sleep 10ms"); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } sout("after sleeping, thread2 is going on"); sout("thread2 is over"); } } }
以上就是java sleep()和wait()的区别,希望对大家有所帮助。更多Java学习指路:Java基础
本教程操作环境:windows7系统、java10版,DELL G3电脑。
课程教程:java sleep()和wait()的区别上一篇:代理IP如何在爬虫中使用
下一篇:没有了