package Thread.createThread; import java.util.concurrent.TimeUnit; /* *ç¨ä¸åçå é¨ç±»åå»ºçº¿ç¨ * 1.å é¨ç±»ç»§æ¿Threadæ¥å£ * 2.å é¨ç±»å®ç°Runnableæ¥å£ * 3.å é¨ç±»ä½ä¸ºå¿åå é¨ç±»ï¼ * åå«ç»§æ¿Thread * å®ç°Runnable * ï¼ * * è¿éåªæ¼ç¤ºå®ç°Runnableæ¥å£çä¸¤ç§æ¹æ³ï¼ç»§æ¿Threadçåæ³ç±»ä¼¼ * * */ public class ThreadVarious { public static void main(String[] args) { InnerRunnable1 class1=new InnerRunnable1("线ç¨ä¸"); } } /* * å é¨ç±»å®ç°Runnableæ¥å£ * * */ class InnerRunnable1{ private int count=5; Inner inner; public InnerRunnable1(String name){ Inner inner=new Inner(name); } private class Inner implements Runnable{ Thread thread; public Inner(String name){ thread=new Thread(this,name); thread.start(); } public void run() { while(true){ //thisç´æ¥è°ç¨å é¨ç±»çtoString()æ¹æ³ System.out.println(this); if(--count==0) return; try { TimeUnit.MILLISECONDS.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public String toString(){ return thread.getName()+":"+count; } } } /* * å°å é¨ç±»ä½ä¸ºå¿åå é¨ç±»ï¼è¿æ¯å®ç°Runnableæ¥å£ï¼ * */ class InnerRunnable2{ private int count=5; private Thread t; public InnerRunnable2(String name){ t=new Thread(new Runnable() { @Override public void run() { while(true){ System.out.println(this); if(count--==0) return ; } } public String toString(){ return t.getName()+":"+count; } },name); t.start(); } }