Java 使用线程调度特定于时间的操作

Java 使用线程调度特定于时间的操作,java,multithreading,scheduling,Java,Multithreading,Scheduling,在一个单cpu的多线程程序中,当我们说一个特定的线程要做某件事时,比如说每10秒,我们如何保证这个线程一定会在上一次执行10秒后运行(获得运行的机会) 为了使该线程在10秒内运行,操作系统必须中断在该特定时间运行的任何线程。据我所知,我们无法完全控制谁在特定时间跑步 当我们进行特定于时间的操作时,我们得到的只是一种幻觉吗? 有人能解释一下吗?简单的回答是肯定的,这是一种错觉。即使使用单线程程序,也不能保证程序将在您希望执行操作的准确时间运行。这是因为操作系统可能允许其他任务在该特定时刻运行。您可

在一个单cpu的多线程程序中,当我们说一个特定的线程要做某件事时,比如说每10秒,我们如何保证这个线程一定会在上一次执行10秒后运行(获得运行的机会)

为了使该线程在10秒内运行,操作系统必须中断在该特定时间运行的任何线程。据我所知,我们无法完全控制谁在特定时间跑步

当我们进行特定于时间的操作时,我们得到的只是一种幻觉吗?
有人能解释一下吗?

简单的回答是肯定的,这是一种错觉。即使使用单线程程序,也不能保证程序将在您希望执行操作的准确时间运行。这是因为操作系统可能允许其他任务在该特定时刻运行。您可以使用线程优先级来尝试并鼓励OS调度器优先安排您的任务的优先级,但这并不能保证它将在给定的时间运行

“上一次执行后正好10秒”这显然是不可能的。你必须容忍时间。如果你想得到尽可能接近10秒的时间,你将需要一些exta硬件——比如一组氢喷泉脉泽钟。