線程開啓的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{  
      
}  

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章