标签: wait

Java:线程如何在多个对象上等待?

线程可以Object.wait()用来阻塞直到另一个线程调用notify()notifyAll()在该对象上.

但是如果一个线程想要等到多个对象中的一个被发出信号呢?例如,我的线程必须等待,直到要么 a)使用字节可用从阅读InputStream或b)项被添加到ArrayList.

线程如何等待这些事件发生?

编辑

这个问题涉及等待多个线程完成 - 我的情况涉及一个线程等待许多对象中的一个被单独化.

java multithreading notify wait

19
推荐指数
3
解决办法
1万
查看次数

为什么Lock条件等待必须持有锁

我对此表示怀疑,在Java语言中,我们需要保持锁定,然后再等待满足某些条件.

例如,int java monitor lock:

synchronized(lock){
   System.out.println("before lock ...");
   lock.wait();
   System.out.println("after lock ...");
}
Run Code Online (Sandbox Code Playgroud)

或者是黄色的工具.

Lock lock = new ReentrantLock();
Condition cond = lock.newCondition();

lock.lock();
try{
     System.out.println("before condition ...");
     cond.await();
     System.out.println("after condition ...");
}catch(Exception e){
     e.printStackTrace();
}finally{
     lock.unlock();
}
Run Code Online (Sandbox Code Playgroud)

所以,为什么我们不能等待,而不是锁定?

如果只是因为Java,其他语言的工作方式不同?

我希望你能在设计之后解释原因,但不仅仅是JAVA-SPEC的定义.

java concurrency multithreading wait java.util.concurrent

19
推荐指数
2
解决办法
4596
查看次数

如何强制程序等待HTTP请求在JavaScript中完成?

有没有办法在JavaScript中向HTTP服务器发送HTTP请求并等待服务器响应回复?我希望我的程序等到服务器回复,而不是执行此请求之后的任何其他命令.如果HTTP服务器关闭,我希望在超时之后重复HTTP请求,直到服务器回复,然后程序的执行可以正常继续.

有任何想法吗?

提前谢谢你,Thanasis

javascript xmlhttprequest httprequest wait

18
推荐指数
3
解决办法
7万
查看次数

在PowerShell中等待所有子进程完成

我想同时在PowerShell中执行多个外部脚本,然后等待所有这些脚本完成后再继续.目前我正在使用'start-process -NoNewWindow ...'命令行开关,它循环遍历所有子进程,但随后终止.

我找到了很多方法等待1个进程完成(这显然是微不足道的)但是它们似乎都不能解决我的问题.

在PowerShell中拥有UNIX版本的等价物肯定是我想要的.

powershell process wait

18
推荐指数
2
解决办法
2万
查看次数

同步块与等待/通知和没有它们之间的区别?

如果我只使用synchronized,而不是wait/notify方法,它是否仍然保持线程安全?

有什么不同 ?

Thx提前.

java multithreading synchronized notify wait

18
推荐指数
3
解决办法
1万
查看次数

在Selenium WebDriver中设置加载页面的实际超时时间?

我正在测试一个包含大量代理的站点,问题是其中一些代理非常慢.因此我的代码时不时地加载页面.

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多类似的东西explicit waits,implicit waits并且已经搜索了很长一段时间但仍然没有找到解决方案或解决方法.似乎没有什么真正影响页面加载线browser.get("http://example.com/example-page.php"),这就是为什么它总是卡在那里.

有人为此得到了解决方案吗?

更新1:

JimEvans的回答解决了我之前的问题,在这里你可以找到这个新功能的python补丁.

新问题:

browser = webdriver.Firefox()
browser.set_page_load_timeout(30)

browser.get("http://example.com/example-page.php")

element = browser.find_element_by_id("elementA")
element.click() ## assume it's a link to a new page http://example.com/another-example.php

another_element = browser.find_element_by_id("another_element")
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,browser.set_page_load_timeout(30)只影响browser.get("http://example.com/example-page.php")这意味着如果这个页面加载超过30秒就会抛出超时异常,但问题是它没有超过页面加载的能力,例如element.click(),尽管它不会阻塞直到新页面完全加载起来,another_element = browser.find_element_by_id("another_element")是在屁股的新的疼痛,因为无论explicit waitsimplicit waits将等待它开始寻找那些元素之前整个页面加载.在某些极端情况下,这甚至需要HOURS.我能做些什么呢?

python selenium webdriver wait selenium-webdriver

18
推荐指数
1
解决办法
2万
查看次数

解释dtruss输出,如"psynch_cvwait(...)= -1 Err#316"

dtruss似乎是分析OS X上应用程序(错误)行为的有用工具.我strace在Linux上找到了我心爱的关闭事物.但解释其输出需要了解它所引用的系统调用,有时还需要了解它们可能产生的错误条件.以线为例

psynch_cvwait(0x6BE38D54, 0x100000100, 0x0)      = -1 Err#316
Run Code Online (Sandbox Code Playgroud)

我对文档来源感兴趣,这些文档可以让我找出这个系统调用的目的,它的参数表示什么,以及这个错误代码代表什么.非常像我期望从libc函数手册页.我要求一个描述上述和类似系统调用的参考,具有上述和类似的错误.因此,只需将该行作为我希望能够理解的输出类型的示例.

有关OS X系统调用的相关参考文档是什么?

您的参考覆​​盖的系统调用越多越好.

macos darwin dtrace system-calls wait

18
推荐指数
3
解决办法
4521
查看次数

C#:如何暂停线程并在某些事件发生时继续?

如何暂停线程并在某些事件发生时继续?

我希望线程在单击按钮时继续.有人告诉thread.suspend不是暂停线程的正确方法.那另一个解决方案

c# multithreading wait

17
推荐指数
2
解决办法
2万
查看次数

python threading:Event.set()会真正通知每个等待的线程

如果我有一个threading.Event和以下两行代码......

event.set()
event.clear()
Run Code Online (Sandbox Code Playgroud)

...我有一些线程在等待那个事件.

我的问题与调用set()方法时会发生什么有关:

  • 我可以绝对确定所有等待的线程都会收到通知吗?(即Event.set()"通知"线程)
  • 或者可能会发生这两行在彼此之后如此快速地执行,某些线程可能仍在等待?(即Event.wait()轮询事件的状态,该状态可能已经被"清除"了)

谢谢你的回答!

python events multithreading wait

17
推荐指数
2
解决办法
2万
查看次数

VBA中的时序延迟

我想在我的代码中延迟1秒钟.下面是我试图延迟的代码.我认为它会轮询操作系统的日期和时间,并等到时间匹配.我有延迟的问题.我认为它不会轮询与等待时间匹配的时间,它只是坐在那里并冻结.它只会冻结我运行代码的大约5%的时间.我想知道Application.Wait以及是否有办法检查轮询时间是否大于等待时间.

   newHour = Hour(Now())
   newMinute = Minute(Now())
   newSecond = Second(Now()) + 1
   waitTime = TimeSerial(newHour, newMinute, newSecond)
   Application.Wait waitTime
Run Code Online (Sandbox Code Playgroud)

vba timedelay timer wait pause

17
推荐指数
5
解决办法
20万
查看次数