Jsystem: Thread.sleep () в тесте останавливает монитор - PullRequest
0 голосов
/ 03 мая 2010

Наверное, я скучаю по некоторым базовым вещам, читая темы. Однако вот моя проблема:

У меня работает монитор. С другой стороны, у меня есть тест. Тест выполняет SQL-запрос несколько раз, между каждым выполнением, ожидая несколько мс с Thread.sleep (xy).

for (int i = 0; (i < iterationsteps); i++) { 
    rs = myQuery.execute(); 
    //check if rs is empty 
    if (!rs.next()) { Thread.sleep(1000); 
    } 
}

Теперь проблема в том, что из-за этого Thread.sleep (1000) также кажется, что Монитор спит (по крайней мере, он не проверяет). Я думал, что монитор - это отдельная тема.

1 Ответ

0 голосов
/ 03 мая 2010

Я не уверен, к чему вы стремитесь с помощью своего кода, но одна вещь наверняка myQuery.execute() будет блокироваться, пока не закончится.

Если вы хотите сделать это в фоновом режиме, вам нужно создать отдельную нить для этого:

    new Thread() {
        public void run() {
            rs = myQuery.execute(); 
        }
    }.start();

Однако это имеет много последствий. Некоторые из них очевидны, некоторые нет, и это определенно потребует некоторого кода синхронизации.

Если вы не знаете, что делаете, я настоятельно рекомендую вам использовать однопоточный подход.

...