Thread.sleep () está travado?

qui está o meu código simples para fazer um loop a cada segundo (não precisa ser exato) e iniciar um trabalho, se necessári

while (true) {
  // check db for new jobs and 
  // kick off thread if necessary
  try {
    Thread.sleep(1000);
  } catch(Throwable t) {
    LOG.error("", t);
  }
}

Este código funcionou bem por vários meses. Ontem, começamos a ter problemas em que um de nossos servidores parece estar travado no método Thread.sleep (1000). IOW - já faz mais de um dia e o Thread.sleep não retornou. Iniciei o jconsole e recebo essas informações sobre o threa

Name: Thread-3
State: TIMED_WAITING
Total blocked: 2  Total waited: 2,820

Stack trace: 
 java.lang.Thread.sleep(Native Method)
xc.mst.scheduling.Scheduler.run(Scheduler.java:400)
java.lang.Thread.run(Thread.java:662)

Scheduler.java: 400 é a linha Thread.sleep acima. A saída do jconsole não incrementa "Total esperado" a cada segundo, como eu esperaria. De fato, não muda nada. Eu até desliguei o jconsole e o iniciei de novo, na esperança de que isso pudesse forçar uma atualização, mas só consegui os mesmos números novamente. Não sei que outra explicação poderia haver além do fato de a jvm ter pendurado incorretamente o comando sleep. Nos meus anos, porém, tive tão poucos problemas com a jvm que suponho que deve ser uma supervisão da minha part

ota: A outra coisa a observar é que nenhum outro segmento está ativ IOW - a CPU está quase ociosa. Li em algum lugar que o Thread.sleep poderia estar legitimamente faminto se outro segmento estivesse ativo, mas esse não é o caso aqu

ersão @solaris:

$ uname -a
SunOS xcmst 5.10 Generic_141415-08 i86pc i386 i86pc

ersão @java:

$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)

questionAnswers(6)

yourAnswerToTheQuestion