implementing Runnable acts different compared to extending Thread : I'm trying to learn how multithreading works. This is the example code I have:

    public class Processor extends Thread {
	private boolean running = true;

	public void run() {
		while (running) {
			System.out.println("Hello there!");
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public void shutDown() {
		running = false;

	}

    }
    public class ProcessorDemo {
	public static void main(String[] args) {

		Processor proc1 = new Processor();
		proc1.start();
		
		System.out.println("Press return to stop");
		Scanner sc = new Scanner(System.in);
		sc.nextLine();
		proc1.shutDown();
		
	}

    }

The problem occurs, when I implement Runnable instead of extending Thread - the code difference
    
    public class Processor implements Runnable
    
    // in ProcessorDemo
    Thread proc1 = new Thread(new Processor());

What happens is, the code gives an error, saying:
"The method shutDown() is undefined for the type Thread"

Why is this happening, when both ways of creating Threads should give the same result?

Thanks everyone :) 