Hi guys, I am really really confused with thread and I would really appreciate it if you can help me. Here are my problems:

There are 2 ways to create thread - one extending Thread class and another one is implementing the Runnable interface.

Why many thread does the program has if you don't create any thread using these methods? I've read it from some website that when you run a program JVM auto creates a thread. So, even if you run a very simple program like HelloWorld, it will have at least have one thread? If it is true, does it counted as a thread is you use activeCount() method to get the number of active threads? In one of the program I wrote, the activeCount() returns 7threads even though I created only 2.

You need an object to create a thread right? Why do you need to create an object of the current class to run? I mean in extending methods
Code:
public class myThread extends Thread
{
	pubilc void run()
	{
		System.out.println ("thread running");
	}
	
	public static void main (String[] args)
	{
		//why this line works 
		myThread yes = new myThread();
		yes.start()
		
		//and why this doesn't?
		Thread no = new Thread;		
		no.start();
	}
}
Also in Runnable interface
Code:
public class myThread implements Runnable
{
	pubilc void run()
	{
		System.out.println ("thread running");
	}
	
	public static void main (String[] args)
	{
		//what is the difference between this
		myThread yes = new myThread(); 
		Thread t = new Thread (yes);
		t.start()
		
		//and this? 'this' refer to the object itself right?
		//In this case I haven't create any object of myThread class how come it works? 
		Thread t = new Thread(this);		
		t.start();
	}
}
Thank you in advance.