java中基于时间的线程同步

时间:2014-04-22 10:39:33

标签: java multithreading synchronization

想知道java中是否存在基于时间的同步。例如,下面的同步会锁定一个对象,并等待//我的应用程序处理器完成任务。

synchronize (myobject)
{
  //my application processor.
}

同样的,有没有办法说同步只有1分钟或2分钟。

synchronize (only for 1 min && object)
{
  //my application processor
}

或Java同步方法中是否有其他方法。

P.S:   我不想运行另一个ThreadManager来监控上面的内容。   而且我不想在循环中运行。

3 个答案:

答案 0 :(得分:1)

有一种方法可以指定最小值,使用计时器,然后添加延迟来填充额外的。

但是要指定线程保持同步的最长时间取决于完成其关键部分所需的时间。例如,如果可以指定最多一分钟,并且线程仍未完成执行其临界区,则在临界区中间进行同步会导致系统处于不稳定状态。

答案 1 :(得分:1)

如何让你在1分钟之后线程wait()并使用Timer notify()等待对象?因此,如果您的主要流程及时完成工作,它将notify()等待的线程并使其继续,否则它将被迫{1}}在1分钟后继续工作。

答案 2 :(得分:1)

也许你正在寻找像java.util.concurrent.ScheduledThreadPoolExecutor这样的东西,它提供了各种方法来安排在未来的某个指定时间/时间在另一个线程中执行/重复的任务。

也许你有一个长时间保持锁定的方法(几乎总是一个坏主意),并且你问如何在达到时间限制时中止操作并释放锁定。有几种方法可以做到这一点取决于它需要花费这么多时间。

但这些只是猜测。你还没告诉我们你要解决的问题是什么。


您使用" synchronized"的示例超时没有任何意义。 " synchronized"的目的是为了保护数据结构不被破坏。这不是你想要的,只是在有限的时间内。