1. 程式人生 > >執行緒開啟的6種方式

執行緒開啟的6種方式

一個.java檔案中可以有很多類。不過注意以下幾點:
1、public 許可權的類只能有一個(也可以一個都沒有,但最多隻有1個)
2、這個.java檔案的檔名必須是public類的類名(一般的情況下,這裡放置main方法是程式的入口。)
3、若這個檔案中沒有public的類,則檔名隨便是一個類的名字即可
4、用javac 編譯這個.java檔案的時候,它會給每一個類生成一個.class檔案
以下就是一個.java檔案中有多個類的例子,順便理一下執行緒的開啟。
import java.util.Date;  
  
public class ThreadInnerClass {  
  
    /** 
     * @主要看使用內部類怎樣實現一個執行緒 
     */  
    public static void main(String[] args) {  
        
        
//方式一:
ThreadInner thread1=new Thread(new ThreadInner());
//thread1.start();//相當於new Thread(實現Runnable介面)  
//方式二:    
//     ThreadInner thread2= new Thread(new ThreadInner(),"執行緒1")//給這個執行緒取個名字,叫執行緒1
//thread2.start();//同上,相當於new Thread(實現Runnable介面),ThreadInner物件操作執行緒  

      //方式3:    
//      new ThreadInner().run();//執行緒也會執行,不過是這個main在操作執行緒。  
          
//方式4:開啟一個新執行緒,並且實現runnable介面,在run()中寫執行程式碼.這就是用匿名內部類
        /* 
        new Thread(new Runnable(){//相當於是實現runnable介面 
            @Override 
            public void run(){ 
                 
                while(true) 
                { 
                    try { 
                        Thread.sleep(1000); 
                    } catch (InterruptedException e) { 
                        // TODO Auto-generated catch block 
                        e.printStackTrace(); 
                    } 
                     
                    System.out.println("1"); 
                     
                } 
                 
            } 
             
        }).start(); 
        */  
          
      //   方式5: 
        /* 
        new Thread(){//直接重寫run方法 
            @Override 
            public void run(){ 
                System.out.println("2"); 
            } 
             
        }.start(); 
        */  
          //方式6:下面有一個類,繼承Thread,s所以可以直接new一個
        /* 
        new ThreadInner2(){//相當於繼承Thread,重寫run方法。和上面直接重寫run方法同理 
            @Override 
            public void run(){ 
                System.out.println("3"); 
            } 
             
        }.start(); 
        */  
          
    }  
  
}  
  
class ThreadInner implements Runnable{  
      
    @Override  
    public void run(){  
          
        while(true)  
        {  
            try {  
                Thread.sleep(1000);  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
              
            System.out.println(Thread.currentThread().getName()+"  " + new Date());  
        }  
    }  
}  
  
  
class ThreadInner2 extends Thread{  
      
}