Dlaczego Thread.sleep jest zły w użyciu

Przepraszamy za to powtarzające się pytanie, ale nie znalazłem jeszcze zadowalających odpowiedzi. Większość pytań miała swój konkretny przypadek użycia:
Java - alternatywa dla thread.sleep
Czy istnieje lepszy lub alternatywny sposób pominięcia / uniknięcia korzystania z Thread.sleep (1000) w Javie?

Moje pytanie dotyczy bardzo ogólnego przypadku użycia. Poczekaj na zakończenie warunku. Wykonaj jakąś operację. Sprawdź stan. Jeśli warunek nie jest prawdziwy, poczekaj chwilę i ponownie wykonaj tę samą operację.

Na przykład Rozważmy metodę, która tworzy tabelę DynamoDB, wywołując jej tabelę createAPI. Aktywacja tabeli DynamoDB zajmuje trochę czasu, dlatego metoda wywoła jej API DescribeTable, aby odpytywać o status w regularnych odstępach czasu, do pewnego czasu (powiedzmy 5 minut - dopuszczalne jest odchylenie z powodu planowania wątku). Zwraca true, jeśli tabela stanie się aktywna w ciągu 5 minut, w przeciwnym razie zgłasza wyjątek.

Oto pseudo kod:

public void createDynamoDBTable(String name) {
  //call create table API to initiate table creation

  //wait for table to become active
  long endTime = System.currentTimeMillis() + MAX_WAIT_TIME_FOR_TABLE_CREATE;

  while(System.currentTimeMillis() < endTime) {
    boolean status =  //call DescribeTable API to get status;
    if(status) {
         //status is now true, return
         return
    } else {
        try {
            Thread.sleep(10*1000);
        } catch(InterruptedException e) {
        }
    }
  }

  throw new RuntimeException("Table still not created");
}

Rozumiem to, używającThread.sleep blokuje bieżący wątek, a tym samym zużywa zasoby. ale w dość średniej wielkości aplikacji, czy jeden wątek jest dużym problemem?
Czytałem gdzieś to wykorzystanieScheduledThreadPoolExecutor i wykonaj tam sondowanie stanu. Ale znowu, musielibyśmy zainicjować tę pulę z co najmniej 1 wątkiem, gdzie uruchomiłaby się metoda runnable, aby wykonać odpytywanie.

Wszelkie sugestie, dlaczego używaćThread.sleep mówi się, że jest to taki zły pomysł i jakie są alternatywne opcje osiągnięcia tego samego, co powyżej.

http://msmvps.com/blogs/peterritchie/archive/2007/04/26/thread-sleep-is-a-sign-of-a-poorly-designed-program.aspx

questionAnswers(2)

yourAnswerToTheQuestion