睡觉但释放锁定

时间:2015-03-11 11:04:16

标签: java

我想编写一个代码块,我希望我的线程可以睡10分钟。我可以通过Thread.sleep()来完成。

但是,我想释放获得的锁。所以其他线程可以使用它。在这种情况下我可以使用object.wait()。但是我不能像其他获取锁的线程在处理后notify()那样做。所以我的线程再次醒来可能会在10分钟之前。

我需要的是10分钟的准确睡眠,而且,我不想保持锁定。所以其他线程可以使用它。

请协助。谢谢

1 个答案:

答案 0 :(得分:2)

使用ScheduledExecutorService

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

scheduler.schedule(runnableTask, 10, TimeUnit.MINUTES);

其中runnableTask是实现Runnable的类的实例,并且具有您希望在其run()方法中运行的代码。

如果您需要代码返回值,请使用Callable代替Runnable

您可能希望在代码或任何其他并发构造中使用带有锁的synchronized块,以避免多个线程同时运行您的代码。