提供有关java中等待和睡眠的详细信息[重复]

Posted

技术标签:

【中文标题】提供有关java中等待和睡眠的详细信息[重复]【英文标题】:Provide the details about wait and sleep in java [duplicate] 【发布时间】:2017-07-11 02:19:15 【问题描述】:

我需要 java 中等待和睡眠方法之间的确切区别。上述方法请详细说明。

【问题讨论】:

究竟你不喜欢目前的答案?(就像我链接的问题) Google 是否为您屏蔽了? 【参考方案1】:

睡眠(): 它是 Thread 类的静态方法。它使当前线程在指定的时间内进入“不可运行”状态。在此期间,线程保留它已获取的锁(监视器)。

wait():它是Object类的一个方法。它使当前线程进入“不可运行”状态。 Wait 是在对象上调用的,而不是在线程上调用的。在调用 wait() 方法之前,对象应该是同步的,这意味着对象应该在同步块内。调用 wait() 释放获取的锁。 例如:

synchronized(LOCK)    
    Thread.sleep(1000); // LOCK is held


synchronized(LOCK)    
    LOCK.wait(); // LOCK is not held

让我们对以上所有点进行分类:

来电:

wait(): Call on an object; current thread must synchronize on the lock object.
sleep(): Call on a Thread; always currently executing thread.

同步:

wait(): when synchronized multiple threads access same Object one by one.
sleep(): when synchronized multiple threads wait for sleep over of sleeping thread.

保持锁定:

wait(): release the lock for other objects to have chance to execute.
sleep(): keep lock for at least t times if timeout specified or somebody interrupt.

唤醒条件:

wait(): until call notify(), notifyAll() from object
sleep(): until at least time expire or call interrupt().

用法:

sleep(): for time-synchronization and;
wait(): for multi-thread-synchronization.

【讨论】:

以上是关于提供有关java中等待和睡眠的详细信息[重复]的主要内容,如果未能解决你的问题,请参考以下文章

一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性[重复]

阅读文件夹并提供文件夹中所有文件的详细信息[重复]

如何从命令行查找有关OpenJDK Provider的详细信息

实体异常:在提供程序连接上启动事务时发生错误。有关详细信息,请参阅内部异常

在哪里可以找到有关 Core Data 对象模型版本控制和迁移的更多详细信息?

Windows批处理:睡眠[重复]