//第一种:通过实现Runnable接口创建线程 class Thread01 implements Runnable { public void run() { } } //启动线程 Thread01 t=new Thread01(); new Thread(t).start(); //第二种:通过继承Thread类创建线程 class Thread01 extends Thread { public void run() { } } //启动线程 Thread t=new Thread01(); t.start(); /* 比较两种创建线程的方式: 通过实现Runnable接口创建线程:声明一个实现接口Runnable的类,该类实现接口的run方法,对这个类进行实例化. 启动线程:new Thread(这个类的对象).starat(); 通过继承Thread类创建线程:生一个Thread类的子类,该类重写父类的run方法,对这个类进行实例化,然后通过这个类的对象去调用start方法. 启动线程:new Thread_er().start(); */ //举例 //1.通过实现Runnable接口的方式创建线程 class ZaoShang implements Runnable { public void run() { System.out.println("早上好!"); } } class ZhongWu implements Runnable { public void run() { System.out.println("中午好!"); } } class WanShang { public static void main(String[]args) { ZaoShang z=new ZaoShang(); ZhongWu zh=new ZhongWu(); new Thread(z).start(); new Thread(zh).start(); System.out.println("晚上好!");//这句最先输出. } } //2.通过继承Thread类,创建线程 /* class ZaoShang extends Thread { public void run() { System.out.println("早上好!"); new ZhongWu().start(); } } class ZhongWu extends Thread { public void run() { System.out.println("中午好!"); } } class WanShang { public static void main(String[]args) { new ZaoShang().start(); System.out.println("晚上好!"); } } */