这个问题在这里已经有了答案:Differencebetween"wait()"vs"sleep()"inJava(33个答案)关闭6年前。我遇到了一个发帖者试图让线程等待一秒钟的问题。他们正在使用wait,但在synchronizedblock之外,因此它崩溃了。给定一个正在运行的线程,要暂停给定时间的执行,可以这样做:Thread.sleep(1000);这应该也有效,并且结果非常相似:synchronized(this){this.wait(1000);}使用wait超时,线程将在1秒后取消暂停。问题是这样的:如果我没有任何监控和通知问题,是否有实际理由使用一个而不是另一个?
假设我有以下应该测试的方法:@AutowiredprivateRoutingServiceroutingservice;publicvoidmethodToBeTested(){ObjectobjectToRoute=initializeObjectToRoute();if(someConditions){routingService.routeInOneWay(objectToRoute);}else{routingService.routeInAnotherWay(objectToRoute);}}在这种情况下,RoutingService在单独的线程中运行,因此在它的构造函数中我
运行时:publicstaticvoidmain(String...args)throwsInterruptedException{while(true){System.out.print(".");Thread.sleep(200);}}对比从junit运行相同的代码时:@Testpublicvoidtest()throwsException{while(true){System.out.print(".");Thread.sleep(200);}}有不同的行为:对于main()-当进程运行时,输出按预期显示("."->".."->"...")但是,对于JUnit,当运行同一段代码时
据我所知,sleep()用于让线程hibernate指定时间。我做了两个示例-在示例1中,我得到的输出为1,2,3,4因为我只创造了一个。在示例2中,我创建了线程的2个实例,并得到输出1,1,2,2,3,3,4,4。为什么第一个线程的输出不是1、2、3、4,然后是1,2,3,4是第二个吗?示例1://Usingsleep()methodpublicclassAaaextendsThread{publicvoidrun(){for(inti=1;i示例2://Usingsleep()methodpublicclassAaaextendsThread{publicvoidrun(){for
在我下载最新版本的Netbeans之前,我从未考虑过Thread.Sleep的使用。Netbeans现在警告您不要使用Thread.Sleep。因此,我对该主题进行了一些研究,发现有人说您只需要将Thread.Sleep用于调试/测试目的,如果您在任何其他时间使用它,您的代码就会写得不好。所以我的问题是在以下情况下如何避免使用Thread.Sleep。我编写了一个与另一个应用程序交互的服务器应用程序。服务器有两个线程:处理来自套接字的数据并发回其他信息或只是简单的确认。这是主线程。启动套接字线程后,它会进入一个无限期的while循环。在这个while循环中,我检查以确保套接字线程仍然处
以下代码:longmsBefore=System.currentTimeMillis();//Thread.currentThread().setPriority(Thread.MAX_PRIORITY);try{Thread.sleep(200);}catch(InterruptedExceptione){}System.out.println("Time:"+(System.currentTimeMillis()-msBefore));打印:Time:578Time:594Time:625Time:640Time:641Time:609Time:625Time:625Time:61
我有生成新线程的主执行线程。在main()的主执行线程中,我调用了Thread.sleep()。我什么时候会收到类型为InterruptedException的未处理的异常?。我不确定为什么会收到这个。我认为这是因为我需要对主线程的引用,所以我继续通过Thread.currentThread()对其进行引用。这不是让线程hibernate的方法吗?我需要做的是让主线程等待/sleep/延迟,直到它再次需要工作。 最佳答案 您看到的是一个编译错误,因为您没有正确处理已检查的异常(在本例中为InterruptedException)。处
我希望能够(漂亮地)打印我的map的内容。它们应该有换行符和缩进,而不是单行;忽略集合/可迭代对象/等的toString方法;并递归到嵌套集合中。我对map特别感兴趣。我想JSONing可能是相关的,但我不想走那么远,或者至少-我不希望我的代码必须知道JSON只是为了我漂亮地打印它。我有什么选择(除了自己写这个)? 最佳答案 您可以使用方法MapUtils.debugPrint来自apachecommons集合,以便打印嵌套map。ThismethodprintsanicelyformattedStringdescribingthe
为什么sleep线程需要trycatch来捕获中断的异常?为什么sleep甚至会发出中断异常错误?这是我真正想在Java编程中找出的两个问题我一直在通过谷歌搜索,但我仍然没有找到明确的解释来解释为什么会发生这两件事。 最佳答案 InterruptedException当线程被阻塞/等待并且被另一个线程中断时抛出(通过Thread.interrupt)。将其视为立即终止的请求,不会遭受Thread.stop()的缺点。这样,即使您指示一个线程hibernate数年,您也可以中断该线程。Therecommendedpractice当抛出
我的线程中有一个主循环,其中一部分测试空闲boolean值是否为真。如果是,它将在每次循环迭代时调用Thread.sleep(1)。这是一种有效的方法吗?我的目标是让线程在空闲时占用最少的CPU。 最佳答案 没有。使用Object.wait相反,并确保您在包含boolean值的对象上同步。如果您不同步并且boolean不是volatile,您就没有内存屏障,因此无法保证轮询线程会看到对的更改boolean值。根据javadoc:Thismethodcausesthecurrentthread(callitT)toplaceitsel