Почему не могу разбудить эту тему

Я хочу протестировать метод 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();
}
Другие вопросы по тегам