草庐IT

java - Thread.sleep() 内部是如何工作的

假设我有一个线程T,它持有一个资源R。如果我在当前线程(即T)上调用Thread.sleep(),它会在转到之前释放资源R(让其他线程使用它)吗?睡不睡?或者它会持有该资源,当它醒来时它会再次使用资源R并在完成工作后释放它? 最佳答案 首先Thread.sleep()是Blocking库方法。线程可能会阻塞或暂停,原因有多种:WAITINGI/O完成、等待获取锁、等待从Thread.sleep唤醒或等待另一个线程中的计算结果。当线程阻塞时,它通常被挂起并置于阻塞线程状态之一。因此,当您调用sleep()方法时,Thread离开CPU

java - 从多个线程调用时 Thread.sleep() 如何工作

sleep()是Thread类的静态方法。从多个线程调用时它是如何工作的。以及它如何确定当前的执行线程。?或者可能是一个更通用的问题是如何从不同的线程调用静态方法?不会有任何并发​​问题吗? 最佳答案 howdoesitfigureoutthecurrentthreadofexecution?没必要。它只是调用操作系统,操作系统总是让调用它的线程hibernate。 关于java-从多个线程调用时Thread.sleep()如何工作,我们在StackOverflow上找到一个类似的问题:

Java - 主方法中的 Thread.sleep

我正在审查Java代码,它本质上是一个定期移动/读取/解析一些文件并将数据输出到数据库的重复过程。重复部分(大致)如下完成:publicclassCollectorMain{publicstaticbooleansignalRecieved=false;publicstaticvoidmain(String[]args){Runtime.getRuntime().addShutdownHook(newThread(){publicvoidrun(){shutdown();}});while(!signalRecieved){Collector.execute();try{Thread.

java - 如何对在执行程序服务中运行的代码片段进行单元测试,而不是等待 Thread.sleep(time)

如何对在执行程序服务中运行的代码进行单元测试?在我的情况下,publicvoidtest(){RunnableR=newRunnable(){@Overridepublicvoidrun(){executeTask1();executeTask2();}};ExecutorServiceexecutorService=Executors.newSingleThreadExecutor();executorService.submit(R);}当我进行单元测试时,我想对方法执行进行一些验证。我在执行程序服务中执行它,因为它进行一些网络操作。在我的单元测试中,我必须等到此方法执行完毕。有没

java - 如果 Thread.sleep 是静态的,单个线程如何知道它已进入休眠状态?

我对Thread.sleep()方法有点困惑。如果Thread.sleep()是静态方法,两个线程如何知道哪个线程进入休眠状态。例如,在下面的代码中,我有两个三个Threadsmain、t和t1。我总是调用Thread.sleep()。不是t.sleep()。这是否意味着Thread.sleep()使当前线程进入休眠状态?这意味着Thread实例通过调用静态方法自行进入休眠状态。如果t1想让t进入休眠状态怎么办?这不可能是正确的?publicclassThreadInterrupt{publicstaticvoidmain(String[]args)throwsInterruptedE

java - 如何使用 PowerMock 模拟 Thread.sleep()?

如何使用PowerMock模拟Thread.sleep()?示例接口(interface)和类:publicinterfaceMachine{voidsleep(longmillis);}publicclassMachineImplimplementsMachine{privatestaticfinalLoggerlogger=Logger.getLogger(MachineImpl.class);@Overridepublicvoidsleep(longmillis){try{if(millis>0){logger.trace(String.format("Trytosleepfor

java - 使用 Thread.sleep 进行测试

使用Thread.sleep()加速测试的推荐方法是什么。我正在测试一个具有重试功能的网络库,当连接断开或发生超时错误等时。然而,该库在重试之间使用了Thread.sleep()(因此它不会服务器重新启动时t连接数千次)。该调用显着减慢了单元测试速度,我想知道有哪些选项可以覆盖它。请注意,我愿意实际更改代码,或使用模拟框架来模拟Thread.sleep(),但我想先听听您的意见/建议。 最佳答案 将与时间相关的功能委托(delegate)给单独的组件通常是个好主意。这包括获取当前时间,以及像Thread.sleep()这样的延迟。这

java - 线程 sleep 和线程连接

如果我让一个线程在循环中hibernate,netbeans会提醒我在循环中调用Thread.sleep会导致性能问题。但是,如果我要用join替换sleep,则不会给出此类警告。两个版本都可以编译并且工作正常。我的代码如下(检查“Thread.sleep()vst.join()”的最后几行)。publicclassTest{//Displayamessage,precededbythenameofthecurrentthreadstaticvoidthreadMessage(Stringmessage){StringthreadName=Thread.currentThread().

java - Java 中的 Thread.yield() 和 Thread.sleep(0) 有什么区别?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:AreThread.sleep(0)andThread.yield()statementsequivalent?在我的理解中,Thread.yield()和Thread.sleep(0)都应该通过某种调度算法让CPU重新判断运行哪个线程。区别在于:Thread.yield()是给其他线程执行的机会,而Thread.sleep(0)不会,它只是告诉CPU你应该重新安排执行线程,包括当前线程本身。Thread.yield()只是一个建议,这意味着它可能根本不会被接受,但Thread.sleep(0)会强制进行重新

java - Thread.currentThread().sleep(timer) vs Thread.sleep(time);

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Java:Thread.currentThread().sleep(x)vs.Thread.sleep(x)...之间有什么区别Thread.currentThread().sleep(time)和Thread.sleep(time);还有一件事是我可以在不使用线程类的情况下延迟程序的任何其他方法...