Difference between extends Thread and implements Runnable

How many ways create thread:

extends Thread:



class Bank extends Thread
{
int ifsccode=1;
String bankName="HHBB";
public void bankInfo()
{
System.out.println(ifsccode+"\t"+bankName);
}
}




   final Bank bank=new Bank();
Thread thread1=new Thread()
{
public void run()
{
bank.bankInfo();
}
};
thread1.start();


implements Runnable:


class Bank implements Runnable
{
int ifsccode=1;
String bankName="HHBB";
public void run()
{
System.out.println(ifsccode+"\t"+bankName);
}
}



Bank bank=new Bank();
Thread thread2=new Thread(bank);
thread2.start();