草庐IT

java - 主线程的 sleep 抛出 InterruptedException

我有生成新线程的主执行线程。在main()的主执行线程中,我调用了Thread.sleep()。我什么时候会收到类型为InterruptedException的未处理的异常?。我不确定为什么会收到这个。我认为这是因为我需要对主线程的引用,所以我继续通过Thread.currentThread()对其进行引用。这不是让线程hibernate的方法吗?我需要做的是让主线程等待/sleep/延迟,直到它再次需要工作。 最佳答案 您看到的是一个编译错误,因为您没有正确处理已检查的异常(在本例中为InterruptedException)。处

java - 如果在同步方法中调用,thread.yield() 是否会失去对对象的锁定?

据我所知,Thread.currentThread().yield()是对线程调度程序的通知,它可以将cpu周期分配给其他具有相同优先级的线程(如果存在)。我的问题是:如果当前线程锁定某个对象并调用yield(),它会立即失去该锁定吗?当线程调度程序发现没有这样的线程分配cpu周期时,调用了yield()的线程将再次争取锁定它之前丢失的对象?我在javadoc和论坛中找不到它[http://www.coderanch.com/t/226223/java-programmer-SCJP/certification/does-sleep-yield-release-lock]有50-50答

Java 线程 sleep 和中断异常

为什么sleep线程需要trycatch来捕获中断的异常?为什么sleep甚至会发出中断异常错误?这是我真正想在Java编程中找出的两个问题我一直在通过谷歌搜索,但我仍然没有找到明确的解释来解释为什么会发生这两件事。 最佳答案 InterruptedException当线程被阻塞/等待并且被另一个线程中断时抛出(通过Thread.interrupt)。将其视为立即终止的请求,不会遭受Thread.stop()的缺点。这样,即使您指示一个线程hibernate数年,您也可以中断该线程。Therecommendedpractice当抛出

java - 在 Java 中,对空闲线程使用 Thread.sleep(1) 是否有效?

我的线程中有一个主循环,其中一部分测试空闲boolean值是否为真。如果是,它将在每次循环迭代时调用Thread.sleep(1)。这是一种有效的方法吗?我的目标是让线程在空闲时占用最少的CPU。 最佳答案 没有。使用Object.wait相反,并确保您在包含boolean值的对象上同步。如果您不同步并且boolean不是volatile,您就没有内存屏障,因此无法保证轮询线程会看到对的更改boolean值。根据javadoc:Thismethodcausesthecurrentthread(callitT)toplaceitsel

C++11 线程 : sleep for a remaining time

我正在尝试使用C++11线程为我的小游戏实现一个更新线程。我已经让更新周期“尽可能快”地进行,但我想将其限制为每秒60次。如何获得剩余时间?Core::Core(){std::threadupdateThread(update);//Startupdatethread}voidCore::update(){//TODOGetstarttime//Herehappenstheactualupdatestuff//TODOGetendtime//doubleduration=...;//Gettheduration//Sleepifnecessaryif(duration

c++ - 在不使用 sleep 的情况下延迟后在 C++ 中执行函数

有没有一种简单的方法可以在C++中的特定延迟后让事情发生?在python中,我只使用frame.after(ms,myFunction),它既好又简单——在C++中这似乎是一个更棘手的问题!之前有人建议我使用Sleep(),不幸的是,这不起作用,因为我正在为《半条命2》编写模组,如果我使用Sleep,那么整个游戏会挂起X秒,而不是在X之后调用事件秒。那么有没有另一种方法可以在不使用sleep的情况下在特定延迟后调用函数? 最佳答案 恕我直言,基本上你有2个选择:创建第二个线程,它将代替您的主线程休眠。创建第二个包含计时器的线程。我只

c++ - 如果告诉线程休眠零秒,线程会休眠吗?

我的问题很简单。如果我使用std::this_thread::sleep_for(0ms),线程会休眠吗?我知道这看起来是个愚蠢的问题,但当我告诉线程休眠一小段时间(例如10微秒)时,它通常至少休眠5-10毫秒。我知道这与操作系统如何安排进程有关。我只想知道所有极端情况是如何工作的,因为我有一些代码可能会因为sleep时间过短、零或负数而变慢。编辑1:我已将问题简化为只睡零秒。编辑2:到目前为止,很多评论都是关于我不应该尝试这样做的,但我都有理由而且我很好奇。在我的代码中,我并没有真正调用std::this_thread::sleep_for(0ms),而是根据外部条件休眠了可变的时间

c++ - `std::this_thread::sleep_for()` 是否有任何特定于平台的限制?

在使用std::this_thread::sleep_for()毫秒及以上时,是否需要考虑任何已知的可移植性问题?在我正在进行的项目中,我希望使用Microsoft的Sleep()到naonsleep()到usleep,具体取决于特定平台上可用的内容。其中一些具有明显的限制,例如在某些平台上不支持1000毫秒或更多的延迟。std::this_thread::sleep_for()是否也有这样的怪癖? 最佳答案 Maximumsleepduration:std::this_thread::sleep_for()这里没有问题。你想睡多久

c++ - 为什么我用 Boost.ASIO 实现的简单 HTTP 服务器需要 sleep 才能正常工作

我正在尝试使用Boost.Asio编写一个非常简单的HTTP服务器。这是代码(几乎与Boost.Asio教程中的示例相同)#include#include#include#include#includeusingboost::asio::ip::tcp;intmain(){try{boost::asio::io_serviceio_service;tcp::acceptoracceptor(io_service,tcp::endpoint(tcp::v4(),12345));for(;;){tcp::socketsocket(io_service);acceptor.accept(so

c++ - 在 gmock 的 EXPECT_CALL 中调用 sleep()

我试图在调用FuncHelper之前在.WillOnce中做一些sleep。所以我需要类似于以下内容的内容:EXPECT_CALL(*_mock,Func(_,_,_)).Times(1).WillOnce(DoAll(InvokeWithoutArgs(sleep(TimeToSleep)),Invoke(_mock,&M_MyMock::FuncHelper)));是否可以在.DoAll中使用arg调用sleep()?C++98是首选。更新:该解决方案基于@Smeeheey的回答并使用C++98。templatevoidSleep(){sleep(N);}...EXPECT_CAL