线程开启的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{  
      
}  


猜你喜欢

转载自blog.csdn.net/transformed/article/details/79560068
今日推荐