Почему не могу разбудить эту тему
Я хочу протестировать метод Thread.sleep() и обнаружил интересную вещь. Когда я вызываю метод main(), консоль выводит "UserA sleep..." и "UserA waking...", что означает Программа пробуждена, но когда я использую метод junit для запуска того же кода, что и метод main(), она не выдаст "UserA waking..." ... Я буду признателен, если кто-нибудь сможет это объяснить.
package com.lmh.threadlocal;
import org.junit.Test;
public class ThreadTest {
public static void main(String [] args) {
new Thread(new UserA()).start();
}
@Test
public void testWakeup(){
new Thread(new UserA()).start();
}
}
class UserA implements Runnable{
@Override
public void run() {
try {
System.out.println("UserA sleeping...");
Thread.sleep(1000);
System.out.println("UserA waking...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
1 ответ
Решение
Я предполагаю, что JUnit разрывает тест до завершения сна, потому что поток выполнения теста выходит из метода теста до его завершения. Пытаться
@Test
public void testWakeup() throws Exception {
Thread t = new Thread(new UserA());
t.start();
t.join();
}