草庐IT

java - 定时器:周期小于一毫秒

如题,有没有办法让Timer在毫秒阈值下工作?我的问题与以下问题类似,但它是针对Java的:Thread.Sleepforlessthan1millisecond 最佳答案 如果你想sleep,Thread.sleep有两个方法,oneofwhichacceptsnanoseconds.如果你想安排一个任务,你可以使用ScheduledExecutorService哪些schedule方法也可以使用纳秒。正如@MarkoTopolnik所解释的,结果很可能不会精确到纳秒。 关于java-

java - ScheduledExecutorService 一线程多任务

我是ExecutorService的新手,想知道为什么以下代码可以正确打印“1015”,即使我只创建了一个线程来处理超时?为什么我可以多次调用schedule而不会在单个线程执行器上取消先前的任务?importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassTestExecutorServiceimplementsRunnable{publicstaticScheduledEx

Java:它创建的定时器和线程

我有这个问题:我有一个计时器。它使用scheduleAtFixedRate创建一个新的Timer任务。在那个定时器任务中有一些代码,可能需要一段时间才能完成。如何确保前一个任务尚未完成时Timer不会创建新任务?谢谢 最佳答案 我的回答是不要使用Timer,它已经过时了。自Java5以来,Timer已被ScheduledExecutorService取代,后者更加灵活且易于使用。您可以更好地控制调度程序的工作方式,Timer无法提供这种控制。您使用Executors创建一个工厂类,它有很多工厂方法。您应该查看的是newSingleT

java - HashedWheelTimer vs ScheduledThreadPoolExecutor 以获得更高的性能

如果您需要在一台机器上的jvm中尽可能快地安排大量(非阻塞)任务,我正在考虑使用什么计时器实现。我研究了ScheduledThreadPoolExecutor和HashedWheelTimer来源(+wheeltimergeneraldocs),这里是基本差异(N-到目前为止所有未完成的计划任务的数量,C-车轮尺寸):调度线程池执行器O(logN)添加新任务每个计时器滴答的时间复杂度为O(1)(但每个任务滴答一次,所以总共有N个)O(logN)取消任务每个滴答/任务锁定HashedWheelTimerO(1)添加新任务O(m)每个计时器滴答声(m~N/C,其中C>512大约),所以~C

java - 如何找到定时器线程的来源?

我有一个大项目,也使用了很多库。使用jstack我发现有这样的线程:Timer-2,Timer-3,Timer-4....我能显示的jstack是:java.lang.Thread.State:TIMED_WAITING(onobjectmonitor)atjava.lang.Object.wait(NativeMethod)atjava.util.TimerThread.mainLoop(UnknownSource)-locked(ajava.util.TaskQueue)atjava.util.TimerThread.run(UnknownSource)是否可以找到创建这些线程的类

java - 计算机如何实现Java Timer?

站点上与Timer相关的文章讲的是如何使用Timer来编程。我问了一个不同的问题。Java是如何执行Timer方法的?既然说不用while循环检查当前时间是否为要求的时间点就可以避免耗时,我觉得Timer不是简单的用while循环不断检查比较当前时间来实现的到所需的时间点。谢谢! 最佳答案 IthinkTimerisnotimplementedsimplybyusingwhilelooptocontinuouslycheckingandcomparingthecurrenttimetothedesiredtimepoint.是的,它

java Timer TimerTask多线程

我正在使用Timer和TimerTask长时间轮询聊天应用程序的新消息。我想研究两种“略有”不同的可能性:1:定时器声明为局部变量publicListgetLastMessages(...){[...]Timertimer=newTimer(true);//**Timerdeclaredaslocalvariable**while(someCondiction){MessagesTimerTaskreturnMessagesTask=newMessagesTimerTask([...]);timer.schedule(returnMessagesTask,6000);synchroni

java - 如果花费的时间太长则跳过函数

在Java中,我有一个以特定方式处理文本文件的函数。但是,如果花费太多时间,该过程很可能对该文本文件无用(无论是什么原因),我想跳过它。此外,如果该过程花费的时间太长,它也会使用过多的内存。我试过用这种方式解决它,但它不起作用:for(inti=0;idocs只是目录中文件的List。通常我必须手动停止代码,因为它“卡在”特定文件中(取决于该文件的内容)。有没有一种方法可以测量该函数调用的时间并告诉Java跳过该函数所用时间超过10秒的文件?编辑在拼凑了几个不同的答案后,我想出了这个效果很好的解决方案。也许其他人也可以使用这个想法。首先创建一个实现Runable的类(这样你可以在需要时

java - 在java中调度可运行的任务

我正在跟进一个有趣的question因此,关于使用ScheduledThreadPoolExecutor执行某些重复任务。调度此对象会返回一个ScheduledFuture对象,可以使用该对象取消任务的下一次运行。这里要注意的一点是任务本身与调度完全解耦--ScheduledExecutorServiceexecutor=newScheduledThreadPoolExecutor(1);ScheduledFuturenextSchedule=executor.schedule(task,60000,TimeUnit.MILLISECONDS);哪里-SomeTasktask=newS

java - 使用 java.util.timer 与 Quartz 进行调度的优缺点?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我必须编写一个应用来执行一系列任务:任务在每天0200时运行一次。任务在每天0400时运行一次任务从0003时开始以15分钟为间隔运行任务从0005时开始以15分钟为间隔运行使用普通java.util.timer与使用普通java.util.timer的优缺点是什么?quartz?我应该考虑其他替代方案吗?