第一种,用Thread子类创建
Thread thread = new Thread(){ @Overridepublic void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("1---->" + Thread.currentThread().getName());}}};thread.start();
第二种:用Runnable接口实现
/*** 第二种通过Runnable接口创建*/Thread thread2 = new Thread(new Runnable(){@Overridepublic void run() { while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("2---->" +Thread.currentThread().getName());} }});thread2.start();
第三种:Runnable和Thread类 并存
/*** 第三種 通過Thread子類創建和通過Runnable创建* 两种方式并存的时候系统会调用实现子类的run的那个线程,会把实现接口的那个线程覆盖,和面向对象的重写思路一样。*/new Thread(new Runnable(){//Thread子类创建@Overridepublic void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Runnable接口创建---->" +Thread.currentThread().getName());}}}){//Runnable接口创建@Overridepublic void run() {while(true){try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Thread子类创建---->" +Thread.currentThread().getName());}}}.start();