推广网站站群,深圳市水榭花都房地产公司,网站源码获取在线,随州企业网站建设Java 多线程中的sleep()和wait()方法的区别
1、相同点 sleep()和wait()都可以暂停线程的执行。 2、不同点 所在类不同 sleep()是Thread类的静态方法。 wait()是Object类的方法。
锁释放不同 sleep()是不释放锁的。 wait()是释放锁的。
用途不同 sleep()常用于一定时间内暂停…Java 多线程中的sleep()和wait()方法的区别
1、相同点 sleep()和wait()都可以暂停线程的执行。 2、不同点 所在类不同 sleep()是Thread类的静态方法。 wait()是Object类的方法。
锁释放不同 sleep()是不释放锁的。 wait()是释放锁的。
用途不同 sleep()常用于一定时间内暂停线程执行。 wait()常用于线程间交互和通信。
用法不同 sleep()方法睡眠指定时间之后线程会自动苏醒。 wait()方法被调用后可以通过notify()或notifyAll()来唤醒wait的线程。
二、使用wait()notify()notifyAll()的注意事项 当一个线程需要调用对象的wait0方法的时候这个线程必须拥有该对象的锁接着它就会释放这个对象锁并进入等待状态直到其他线程调用这个对象上的notify()方法。 同样的当—个线程需要调用对象的 notity()方法之前也要先获得对象锁执行完毕后释放这个对象的锁以便其他在等待的线程就可以得到这个对象锁。由于所有的这些方法都需要线程持有对象的锁这样就只能通过同步来实现所以他们只能在同步方法或者同步块中被调用。 三、wait()和notify()的工作原理 如果线程A1A2A3A4都调用了obj.wait()方法那么它们就会进入obj对象的等待队列。当obj.notify()被调用的时候会从等待队列中随机选择一个线程并将其唤醒。而如果调用obj.notifyAll()则会唤醒等待队列中的所有等待线程