Java: ¿por qué este código no funciona? ¿Bucle infinito?

Entonces, como puede ver en mi intento, estoy tratando de averiguar cómo crearía un programa que le diera al usuario 5 segundos para ingresar algunas líneas de texto, luego el Escáner contará cuántas líneas ingresó. Acabo de empezar a aprender Java como mi segundo idioma, así que intenta explicarlo todo de la manera más sencilla posible :)

Tengo dos teorías sobre por qué no funciona. La primera es que nextLine () devolverá la línea completa, independientemente de si está vacía o no significa en lugar de que NL sea igual a "", en realidad será igual a toda la línea (es decir, ""). Y mi segunda teoría es que no tengo ni idea de lo que estoy haciendo y el flujo del programa está por todas partes. De todos modos, aquí está mi código:

class OrigClass{
    public static void main(String args[]){
        Scanner ScanObj = new Scanner(System.in);
        int Count = 0;
        String NL = ScanObj.nextLine();
        try{
            Thread.sleep(5000);}
        catch (InterruptedException e){
            e.printStackTrace();
        }
        while (!NL.equals("")){
            Count++;
            NL = ScanObj.nextLine();
        }
        System.out.print("You Entered " + Count + " Lines.");
        ScanObj.close();
    }
}

Oh, olvidé mencionar que hasNext () fue lo que intenté originalmente:

       import java.util.Scanner;

    class OrigClass{
public static void main(String args[]){
    Scanner ScanObj = new Scanner(System.in);
    int Count = 0;
    try{
    Thread.sleep(5000);}
    catch (InterruptedException e){
        e.printStackTrace();
    }
    while (ScanObj.hasNext() == true){
    Count++;
    ScanObj.nextLine();
    }
    System.out.print("You Entered " + Count + " Lines.");
    ScanObj.close();
}
    }

Respuestas a la pregunta(2)

Su respuesta a la pregunta