草庐IT

ScheduledExecutorService

全部标签

android - ScheduledExecutorService 在服务内部只运行一次

我正在我的服务内部运行ScheduledExecutorService,它在后台拍摄图像。ScheduledExecutorServicerunningonlyonce表示函数传入的interval后只拍一张照片。完全没有显示错误。以下是我的服务的代码packagecom.anawaz.spy;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.concurrent.Executors

android - ScheduledExecutorService vs 定时器 vs 处理程序

使用ScheduledExecutorService/Timer/Handler有什么优缺点?据我了解,在Android而不是Timer中,它需要使用Handler,但是ScheduledExecutorService呢?据我了解,Handler和ScheduledExecutorService仅用于相对时间,对吗? 最佳答案 这三个都允许您在不同的(例如非主)线程上执行任务。Handler允许您使用消息传递Actor模式在线程之间安全地通信。它不允许您进行计时/延迟/等。AScheduledExecutorService是一个非常

java - 等待计时器在 Java 中完成

我正在使用java.util.Timer安排一个周期性的任务。有一次,我想关闭它,然后等待它完成。Timer.cancel()将阻止任何future的任务运行。我如何确保目前没有任何任务在运行(或者等待它们运行?)我可以引入外部同步机制,但我看不出它们如何涵盖所有情况。例如,如果我在任务中的某个监视器上进行同步,我仍然会错过任务刚开始执行但没有占用监视器的情况。等待所有任务真正完成(包括当前正在运行的任务)的推荐做法是什么? 最佳答案 你最好使用ScheduledExecutorService而不是计时器来安排您的周期性任务。Sch

java - 当 Java TimerTask 在 Timer 中调度时,它是否已经是 "executing"?

我想澄清一些关于TimerTask的事情。当您有以下代码时:timer.schedule(task,60000);任务计划在接下来的1分钟内运行的位置,任务对象是否已经在执行?因为在我的代码中某处我调用了task.cancel()但似乎该调用并没有阻止要执行的任务。我什至记录了调用的返回值,它返回false。当我阅读取消方法的文档时,我想到了我的问题:CancelstheTimerTaskandremovesitfromtheTimer'squeue.Generally,itreturnsfalseifthecalldidnotpreventaTimerTaskfromrunninga

java - 预定执行器服务 : when shutdown should be invoked?

我在我的应用程序中使用ScheduledExecutorService。我需要不时在某些实用程序类中使用它来运行计划线程。在静态字段中保存ScheduledExecutorService是一个好的设计吗?在这种情况下是否必须调用ScheduledExecutorService.shutdown()?如果我不调用关闭会有什么风险?这就是我想做的:privatestaticScheduledExecutorServiceexec=Executors.newScheduledThreadPool(5);publicvoidscheduleTask(Stringname){Futurefutu

java - 为什么由 ScheduledExecutorService.schedule() 启动的线程永远不会终止?

当我通过调用ScheduledExecutorService.schedule()创建线程时,它在执行计划任务后永远不会终止。例如下面的程序永远不会退出:publicstaticvoidmain(String[]args){ScheduledFuturescheduledFuture=Executors.newSingleThreadScheduledExecutor().schedule(newCallable(){publicVoidcall(){doSomething();returnnull;}},1,TimeUnit.SECONDS);}publicstaticvoiddoS

java - 如何使用 ScheduledExecutorService 更改重复任务的速率或周期?

这个问题在这里已经有了答案:ScheduledExecutorServicewithvariabledelay(5个答案)关闭4年前。我有一个修改版的蓝牙聊天示例应用程序。我已经设置了一个ScheduledExecutorService,它使用scheduleAtFixedRate以预定义的速率通过蓝牙发送命令。我已经设置了一个PreferenceActivity以允许用户修改时间段。但我不确定如何让实际的重复任务在更新期间发生。我是否需要以某种方式取消并重新启动ScheduledExecutorService?这是我的代码的相关部分。privateScheduledExecutorS

java - 如何在java中使用ScheduledExecutorService以固定间隔调用Callable实现?

ScheduledExecutorService具有scheduleAtFixedRate(Runnablecommand,longinitialDelay,longperiod,TimeUnitunit)等方法以固定间隔调用Runnable类。我希望我的线程在执行后返回一些值。所以我实现了Callable接口(interface)。我找不到定期调用我的Callable类的等效方法。还有其他方法可以实现吗?如果Java不提供此功能,那么该决定背后的理由是什么?请告诉我。谢谢。 最佳答案 您不能安排Callable定期执行,因为不清楚

java - ScheduledExecutorService 会根据需要创建新线程吗?

我正在使用Executors.newScheduledThreadPool()创建一个ScheduledExecutorService,像这样指定线程数:intcorePoolSize=42;ScheduledExecutorServicefoo=Executors.newScheduledThreadPool(corePoolSize);根据JavaDocs,corePoolSize参数集thenumberofthreadstokeepinthepool,eveniftheyareidle.这是否意味着此ExecutorService实现可能会根据需要创建超过corePoolSize

java - ScheduledExecutorService start stop 几次

我正在使用ScheduledExecutorService,在我称之为shutdown之后方法,我无法在其上安排Runnable。调用scheduleAtFixedRate(runnable,INITIAL_DELAY,INTERVAL,TimeUnit.SECONDS)在shutdown()之后抛出java.util.concurrent.RejectedExecutionException。在ScheduledExecutorService上调用shutdown()后,是否还有另一种运行新任务的方法?? 最佳答案 您可以重复使用