Tengo una pregunta con respecto al método scheduleAtFixedRate() en ScheduledExecutorService en Java 6.Comportamiento de ScheduledExecutorService.scheduleAtFixedRate de Java()
[editar : el Javadoc de 1.6 es más completa que la de 1.5. Véase el comentario a continuación]
dado que:
- la ScheduledExecutorService se construye con N = 1 hilo en la piscina
- la tasa fija es un período de T segundos
- ningún retraso inicial
Lo que sucede en este caso (los tiempos no están destinados a ser absoluto, en el sentido de tiempo real):
- en el tiempo T, el servicio inicia una tarea Ejecutable, "Task1"
- en el tiempo 2T, Task1 aún no ha terminado, y el servicio está programado para disparar
¿Está el servicio garantizado para hacer cualquier ¿de los siguientes?
- (a) al 2T, inicio a una tarea ejecutable, "Task2" (recuperación de N = 1)
- (b) bloque hasta Task1 está terminado
- (c) omitir este tiempo y tratar de nuevo en el 3T
- (d) comportamiento no está definido
O algo más? ¿La respuesta cambia si N> 1?
Estaba viendo el documento Java 1.5 (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate%28java.lang.Runnable, % 20long,% 20long,% 20java.util.concurrent.TimeUnit% 29), que no tiene la respuesta. Al escribir esta pregunta, me vinculé al documento 1.6 sin mirarlo de cerca. Como verá, la respuesta para 1.6 es evidente. –