当前位置: 首页 > 面试题库 >

.NET的ManualResetEvent和WaitHandle的Java等效项

程天佑
2023-03-14
问题内容

我想知道Java是否提供了.NET的ManualResetEvent和WaitHandle类的等效类,因为我想编写代码,除非触发事件,否则它将在给定的超时时间内阻止。

据我所知,WaitHandle和ManualResetEvent的.NET类提供了一个不错的,无麻烦的接口,据我所知,该接口也是线程安全的,那么Java必须提供什么?


问题答案:

您是否考虑过改用wait/ notify(等价于Monitor.WaitMonitor.Pulse)?

您需要进行一点检查,以查看您是否确实 需要 等待(避免出现竞争状况),但是它应该可以工作。

否则,类似的事情CountDownLatch可能会做您想要的。

编辑:我只注意到这CountDownLatch基本上是“单一用途”-就我所知,您以后不能重置计数。您可能想要Semaphore代替。tryAcquire像这样使用来等待超时:

if (semaphore.tryAquire(5, TimeUnit.SECONDS)) {
   ...
   // Permit was granted before timeout
} else {
   // We timed out while waiting
}

请注意,这与ManualResetEvent每次成功调用tryAcquire都会减少许可数量不同-
因此最终它们将再次用尽。您无法像使用那样使它永久“设置”
ManualResetEvent。(可以使用CountdownLatch,但是您无法“重置”它:)



 类似资料:
  • 问题内容: 拜托,别问我为什么。我只是在.NET中使用此代码来加密/解密数据字符串。我现在需要在Java中使功能完全相同。我已经尝试了多个DESede crypt的示例,但是没有一个示例与.net中的此类结果相同。 我什至在ssl后面制作了一个.net webserbvice来为.net中编写的这两种方法提供服务,但是这样做太愚蠢了,不能用尽所有的可能性。 也许在该领域中与您关系更密切的一些Jav

  • 问题内容: .NET具有用于模拟浏览器请求的HttpWebRequest和WebClient类。 我会用google搜索,但不确定使用什么关键字。 我想编写在applet或local中执行HTTP GET和POST以及cookie的代码,并以文本字符串或其他可解析的结构返回响应。 问题答案: 与Java等效。

  • 问题内容: 我对Java的异常包不如.NET那样熟悉。我处于一种情况,如果使用C#编程,我会抛出。 在创建自己的子类之前,我需要知道是否应该在Java中抛出类似的异常类型。 确切的情况是: 我的类是一个提供方法的值对象,该方法返回一个int值。但是,在某些情况下,当前值不能作为int提供,因此此类还提供了一个允许API用户知道何时可以安全地调用它们的方法。 如果主叫用户呼叫时是一个异常应该被抛出。

  • 问题内容: 如何将PHP变量的值转换为字符串? 我在寻找比连接空字符串更好的东西: 就像Java或.NET中的方法一样。 问题答案: 您可以使用强制转换运算符: PHP手册的“ 字符串”部分提供了有关字符串转换和转换的更多详细信息,包括对布尔值和null的特殊处理。

  • 问题内容: 具体来说,我正在寻找与/ 等类似的清晰符号。 必须编写一个foreach循环来检查每个对象上方法的返回感觉很臭,所以我希望有一个更好的Java习惯用法。 问题答案: 谓词在Google收藏库中提供。

  • 问题内容: Printf在1.5版本中添加到Java中,但是我似乎找不到如何将输出发送到字符串而不是文件的方法(这是sprintf在C语言中的作用)。有谁知道如何做到这一点? 问题答案: 查看格式及其语法