Java创建线程的三种方式


1)继承Thread,重写其的run方法

2)实现Runnable接口

代码如下:

  1. package com.study;  
  2. /** 
  3.  *  
  4.  * @ClassName: ThreadTest 
  5.  * @Description: 创建线程的两种方式 
  6.  * @author 我夕 
  7.  */  
  8. public class ThreadTest {  
  9.       
  10.     public static void main(String[] args) {  
  11.           
  12.         System.out.println("当前线程的名字:"+Thread.currentThread().getName()+";线程ID:"+Thread.currentThread().getId());  
  13.           
  14.         ThreadOne one=new ThreadOne();  
  15.         one.setName("ThreadOne");//为了便于调试,建议创建时给线程设个名称  
  16.         one.start();  
  17.   
  18.         Thread two2=new Thread(new ThreadTwo());  
  19.         two2.setName("ThreadTwo");  
  20.         two2.start();  
  21.           
  22.     }  
  23.       
  24.     //继承Thread,覆盖父类run方法  
  25.     public static class ThreadOne extends Thread{  
  26.         @Override  
  27.         public void run() {  
  28.             // TODO Auto-generated method stub  
  29.             super.run();  
  30.             //do xx  
  31.             System.out.println("当前线程的名字:"+Thread.currentThread().getName()+";线程ID:"+Thread.currentThread().getId());  
  32.         }  
  33.     }  
  34.       
  35.       
  36.     //实现Runnable接口  
  37.     public static class ThreadTwo implements Runnable{  
  38.   
  39.         @Override  
  40.         public void run() {  
  41.             // TODO Auto-generated method stub  
  42.             //do xx  
  43.             System.out.println("当前线程的名字:"+Thread.currentThread().getName()+";线程ID:"+Thread.currentThread().getId());  
  44.         }  
  45.           
  46.     }  
  47. }  

总结:

创建线程的传统方式就上面两种(这里不考虑jdk1.5种线程并发库里的创建方式,后续会写到),但写的方式却是多种多样,希望初学者不要被其搞混掉

两种方式都可以创建线程,第一种方式创建比较简单,但由于java是单继承的缘故,创建出的Thread子类就无法在继承其他类;实现Runnable接口的方式可以将cpu、代码和数据分开,同时创建出的线程可以共享处理同一份资源。

记住:Thread类本身也实现了Runnable接口,因此Thread类及其子类的对象也可以作为target传递给新的线程对象。

  • 1
  • 2
  • 下一页

相关内容