【发布时间】:2014-07-29 11:19:17
【问题描述】:
我阅读了其他帖子,但没有找到我正在寻找的确切答案,所以我希望有人能给出一些澄清。
我有一个可以运行一段时间的程序。我有一些在后台运行的线程来执行各种任务,为了简单起见,让我们想想 3 个线程。 ThreadA 每 10 秒执行一次任务,ThreadB 每 30 秒执行一次任务,ThreadC 每 5 分钟执行一次任务。
我不使用忙等待,而是让线程在指定的时间内休眠。
我的问题是关于彻底关闭。我有一个变量,每个线程也具有读取访问权限,因此他们可以看到用户何时启动程序退出。下次线程处于活动状态时,它们会退出循环并加入,一切都很好。但是你可以看到 ThreadC 每 5 分钟才唤醒一次。
我的问题是我可以在睡眠时间结束之前向睡眠线程发出唤醒并退出的信号吗?如果这不可能,我是否需要重新编写代码以使用 wait() 和 notify() 或者有更好的方法吗?
【问题讨论】:
标签: java multithreading thread-sleep