java定时器和thread.sleep

java定时器和thread.sleep,java,multithreading,timer,Java,Multithreading,Timer,假设我有一个线程正在运行,里面有一个timer.schedule(任务,5000)。 现在我们假设计时器开始运行,线程中的某个地方有thread.sleep()。当线程仍处于休眠状态时,5000毫秒将通过。当计时器所在的线程处于睡眠状态时,计时器的任务是否仍在运行 感谢Thread.sleep()不能在线程中的某个位置,它可以在任务代码中,因此任务执行将阻塞5000毫秒,然后运行到完成 请注意,java.util.Timer是一个单线程调度程序,如果任务执行被阻止,Timer将无法执行其他计划任

假设我有一个线程正在运行,里面有一个timer.schedule(任务,5000)。 现在我们假设计时器开始运行,线程中的某个地方有thread.sleep()。当线程仍处于休眠状态时,5000毫秒将通过。当计时器所在的线程处于睡眠状态时,计时器的任务是否仍在运行

感谢

Thread.sleep()不能在线程中的某个位置,它可以在任务代码中,因此任务执行将阻塞5000毫秒,然后运行到完成

请注意,java.util.Timer是一个单线程调度程序,如果任务执行被阻止,Timer将无法执行其他计划任务。见API

与每个计时器对象对应的是一个后台线程,用于按顺序执行计时器的所有任务计时器任务应快速完成。如果计时器任务花费过多的时间来完成,它会“占用”计时器的任务执行线程。这反过来会延迟后续任务的执行,当(如果)有问题的任务最终完成时,后续任务可能会“聚集”并快速连续执行

Thread.sleep()不能在线程中的某个位置,它可以在任务代码中,因此任务执行将阻塞5000毫秒,然后运行到完成

请注意,java.util.Timer是一个单线程调度程序,如果任务执行被阻止,Timer将无法执行其他计划任务。见API


与每个计时器对象对应的是一个后台线程,用于按顺序执行计时器的所有任务计时器任务应快速完成。如果计时器任务花费过多的时间来完成,它会“占用”计时器的任务执行线程。这反过来会延迟后续任务的执行,当(如果)有问题的任务最终完成时,后续任务可能会“聚集”并快速连续执行

解决这个问题的最简单和最令人兴奋的方法是使用您创建的代码自己测试它。当您这样做时会发生什么?另一种方法是查看JDK附带的Java API源代码文件,在
src.zip
文件中。解决这个问题的最简单和最激动人心的方法是使用您创建的代码自己测试它。当您这样做时会发生什么?另一种方法是查看JDK附带的Java API源代码文件,在
src.zip
文件中。