`
lighter
  • 浏览: 501079 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

wait方法是在什么时候结束

阅读更多
wait方法是在什么时候结束

1、当notify方法执行时

   对obj调用notify方法,线程被唤醒时.

2、当notifyAll方法执行时
   notifyAll 会把实例的等待区里所有的线程全部唤醒。无论是notify还是notifyALl,线程被唤醒后,还是要重新获取obj的锁定。

3、当interrupt方法执行时

   被interrupt时,等待区里的线程会重新获取obj的锁定,并抛出InterruptedException异常。
   notify、notifyAll两个方法是对实例调用的,而interrupt则是对线程调用的。

4、发生timeout的时候
   当wait方法参数中的设置的timeout时间已经到了的时候.如: 
   obj.wait(1000); //指定timeout的时间约为1000毫秒.
   执行这个语句,线程就会进入obj的等待区里暂停,并释放obj的锁定,只有超过指定的时间的时候,才会成等候区退出。

但必须注意一点:
synchronized 没有timeout,也不能中断
分享到:
评论

相关推荐

    sleep() 方法和wait()方法的区别.docx

    wait() 方法可以通过 notify 或者 notifyAll 或者指定睡眠时间来唤醒当前等待池中的线程。 sleep() 和 wait() 方法的区别 sleep() 和 wait() 方法的最大区别是: 1. sleep() 睡眠时,保持对象锁,仍然占有该锁; ...

    TCP状态迁移,CLOSE_WAIT & FIN_WAIT2 的问题解决

    这是因为如果对方在第三次握手的时候出问题,例如发 FIN 包的时候,丢了这个包,然而这边一直处在 FIN_WAIT_2 状态,TCP/IP 并没有设置这个状态的过期时间,那它一直会保留这个状态下去,越来越多的 FIN_WAIT_2 状态...

    java之wait,notify的用法([ 详解+实例 ])

    在Java多线程编程中,wait和notify是两个非常重要的方法,它们都是Object类的方法,用于线程之间的通信和同步。下面我们将详细解释wait和notify的用法。 wait方法 wait方法是Object类的一个方法,用于让当前线程...

    服务器大量TIME_WAIT解决方法

    "服务器大量TIME_WAIT解决方法" 在 Linux 服务器中,TIME_WAIT 状态是一种常见的网络连接状态。然而,出现大量的 TIME_WAIT 状态可能会对服务器的性能产生影响。本文将详细介绍大量 TIME_WAIT 状态的成因、影响和...

    CLOSE_WAIT网络连接无法释放问题解决

    在服务器端,需要在适当的时候调用close()方法,以释放连接资源。在这个例子中,服务器端没有正确关闭连接,导致了CLOSE_WAIT状态的出现。 使用netstat -na命令可以查看当前的TCP连接状态,包括LISTEN、ESTABLISHED...

    为什么在pthread_cond_wait()前要加一个while循环来判断条件是否为假呢?.Linux 多线程

    在使用`pthread_cond_wait()`时,通常会在调用它之前加入一个while循环来判断条件是否满足。这个做法是为了避免虚假唤醒(spurious wakeups)的问题,确保线程只有在正确的情况下才会继续执行。现在我们详细讨论一下...

    wait()编程wait()编程wait()编程wait()编程

    在Java多线程编程中,`wait()`方法是线程同步的重要组成部分,它属于`java.lang.Object`类,主要用于在多线程环境下的资源协调。本文将深入探讨`wait()`方法的工作原理、使用场景以及注意事项。 `wait()`方法的主要...

    大量TIME_WAIT状态的连接解决方法

    ### 大量TIME_WAIT状态的连接解决方法 在Linux系统中,当服务器处理大量网络连接时,可能会遇到TIME_WAIT状态的连接过多导致的问题。TIME_WAIT是TCP连接的一个正常终止状态,但若数量过多则可能会影响到服务器性能...

    java中几个notify、wait使用实例

    在Java的多线程编程中,`notify()`与`wait()`是实现线程间通信的重要方法,它们主要用于解决生产者消费者问题、读者写者问题等典型同步问题。这两个方法定义在`Object`类中,因此所有Java对象都可以作为锁来使用。在...

    Java 同步方式 wait和notify/notifyall

    在Java中,`wait()`, `notify()`, 和 `notifyAll()` 是Java Object类的三个方法,它们在实现线程间通信和协作时扮演着关键角色。这些方法主要用于解决线程等待和唤醒的问题,是基于Java Monitor(监视器)模型的。 ...

    解决mysql出现大量TIME_WAIT

    在IT领域,尤其是在服务器运维与数据库管理中,遇到“大量TIME_WAIT”状态的问题并不罕见,尤其是在高并发场景下,如MySQL服务器。本文将深入解析如何有效解决MySQL出现大量TIME_WAIT状态的问题,通过调整系统内核...

    QTP中Wait与同步点的区别

    然而,这种方法并不总是最理想的,因为它可能会导致效率低下,尤其是在系统响应时间不稳定的情况下。 同步点(Synchronization Point)则提供了一种更为灵活的等待方式。不同于 Wait 函数的固定时间等待,同步点是...

    wait_notify_demo

    `wait()`、`notify()`和`notifyAll()`是Java中的三个关键字,它们属于Object类的方法,主要用于线程间的通信,尤其在实现生产者消费者模式时发挥着重要作用。本文将深入探讨这些方法以及如何在实际场景中应用它们。 ...

    java Object wait方法详细介绍

    4. `wait()`方法会使当前线程进入可中断的等待状态,这意味着可以通过中断线程来结束等待。 5. 为了避免死锁,使用`wait()`、`notify()`和`notifyAll()`时需要谨慎,确保线程在适当的时候释放锁并唤醒其他线程。 6...

    Java多线程wait和notify

    在Java中,`wait()` 和 `notify()` 方法是实现线程间通信和协作的重要工具,它们属于 `java.lang.Object` 类,这意味着所有类都默认继承了这两个方法。本文将详细探讨如何使用 `wait()` 和 `notify()` 来控制子线程...

    wait和notifyAll方法的使用示例

    需要注意的是,调用 `wait()` 方法必须在 `synchronized` 块或方法中进行,否则会抛出 `IllegalMonitorStateException` 异常。 - **notifyAll()**:此方法唤醒所有等待该对象监视器的线程。被唤醒的线程将重新竞争...

    selenium wait

    在上面的代码中,我们使用 `implicitlyWait` 方法来设置隐式等待的超时时间为 10 秒。这意味着,如果在 10 秒内找到了该元素,就会继续执行下一条语句;否则,就会等待 10 秒后继续执行。 比较两种等待机制 显式...

    面试官:你是如何调用 wait()方法的?使用 if 块还是循环?为什么?

    在Java编程语言中,`wait()`方法是Object类的一个成员,它被用于线程同步,特别是在多线程环境中实现线程间的通信。面试官提出这个问题的目的是了解面试者对Java并发编程的理解,以及他们在实践中如何有效地使用线程...

    解决TIME_WAIT过多造成的问题1

    例如,在Java中,可以通过设置SOCKET选项来调整TIME_WAIT状态的处理方式,比如使用SO_LINGER选项来改变TCP关闭连接的行为,或者使用SO_REUSEADDR选项来允许端口重用,尽管这样做可能会增加因为重复分组造成的风险。...

Global site tag (gtag.js) - Google Analytics