首页 > 代码库 > Thread 1st

Thread 1st

1. 环境

  OS:  WIN7

  JDK:  1.6.0_31

  IDE:  ECLIPSE 2013

2. Quick Start

   2.1 建立线程的两种方式 

         1 继承 Thread

 1 class ThreadDemo extends Thread{ 2     @Override 3     public void run(){ 4         System.out.println("the thread is: "+Thread.currentThread().getName()); 5     } 6     public static void main(String[] args){ 7         System.out.println("the thread is : "+Thread.currentThread().getName()); 8         ThreadDemo td1 = new ThreadDemo(); 9         td1.setName("Th-1");10         td1.start();11 12         ThreadDemo td2 = new ThreadDemo();13         td2.start();14     }15 }
View Code

 

        2 实现 Runnable 接口       

 1 class ThreadImplementsRunnable implements Runnable{ 2     @Override 3     public void run(){ 4         System.out.println("The thread is " + Thread.currentThread().getName()+" and the Thred id is " + Thread.currentThread().getId());     5     } 6     public static void main(String[] args){ 7         System.out.println("This is "+Thread.currentThread().getName()+" thread "+"and the Thread id is "+Thread.currentThread().getId()); 8  9         ThreadImplementsRunnable tir1 = new ThreadImplementsRunnable();10         Thread thread1 =  new Thread(tir1);11         thread1.setName("SelfThread-1");12         thread1.start();13 14     }15 }
View Code

 

  2.2  一些说明

        在官方的说明文档中,可以查阅到创建线程的两种方式:继承或者实现。

        继承的特点在于:对于在继承链上非私有的方法或字段,子类都获得了。由此带来的问题是,我们的子类会看起来有些臃肿:有些方法和属性我们

        压根不需要。继承 Thread 类 ,可以完成线程的创建,但是有些冗余了:为了创建线程 ,我的类不需要那么多东西!那就去实现Runable接口并且

        重写run方法:你可以在run方法中写上你自己 感兴趣的东西。对于JDK API 中提到的建议,会在下一个小结 :源码 图解 中展开。至此可以看到语言

        设计时为什么会出现接口,当然这只是很小的一部分原因。

  2.3  源码 图解

        无论采用 继承Thread类还是 实现 Runnable接口:我们都要重写run方法。下面跟着我来看下枯燥无味的源码吧:

        1.继承Thread类

          

3. Tips

4. Refrence