我想编写一个代码块,我希望我的线程可以睡10分钟。我可以通过Thread.sleep()
来完成。
但是,我想释放获得的锁。所以其他线程可以使用它。在这种情况下我可以使用object.wait()
。但是我不能像其他获取锁的线程在处理后notify()
那样做。所以我的线程再次醒来可能会在10分钟之前。
我需要的是10分钟的准确睡眠,而且,我不想保持锁定。所以其他线程可以使用它。
请协助。谢谢
答案 0 :(得分:2)
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(runnableTask, 10, TimeUnit.MINUTES);
其中runnableTask
是实现Runnable
的类的实例,并且具有您希望在其run()
方法中运行的代码。
如果您需要代码返回值,请使用Callable
代替Runnable
。
您可能希望在代码或任何其他并发构造中使用带有锁的synchronized
块,以避免多个线程同时运行您的代码。