创建线程的两种方式

第一种:Thread

Thread类代表线程类型。任何线程对象都是Thread类(子类)的实例。Thread类是线程的模板(封装了复杂的线程开启等操作,封装了操作系统的差异性),只要重写run方法即可实现具体线程。 

 

Thread类创建线程

创建一个具体线程,需要继承于Thread类,覆盖run方法(就是更新运行过程),实现用户自己的过程。

 class Person1 extends Thread{
       @Override
       public void run() {
              for(int i=0;i<1000;i++){
                     System.out.println("你是谁呀!");
              }
       }
 }

这一种创建线程的方式存在一个弊端:线程与线程要干的事情耦合在一起。

 

线程的启动

创建线程实例,使用线程实例的strat()方法启动线程,启动以后线程会尽快的去并发执行run方法

Person1 t1=new Person1();
t1.start();

Java虚拟机会去执行重写了的run方法

 

第二种:Runable接口

创建一个类实现Runable接口,重写run方法。以实现了Runable接口的类的实例对象作为创建Thread类对象的构造函数的参数。

class Person1 implements Runnable{
       @Override//实现了Runable接口的run方法
       public void run() {
              for(int i=0;i<1000;i++){
                     System.out.println("你是谁呀!");
              }
       }
}

启动线程

Thread t1 = new Thread(new Person1());
t1.start();

这种创建方式把线程和线程干的事分开了。

t1.Start()执行完后,java虚拟机会尽快的去执行Thread类的run方法。

Thread类的run方法源程序:

 @Override
 public void run() {
    if (target != null) {
        target.run();
    }
 }

Target就是传进来的实现了Runable接口的类的实例对象。

 

内部类实现创建线程

new Thread(){
    public void run() {
        //线程处理逻辑
    };

}.start();

new Thread(new Runnable() {
    @Override
    public void run() {
      //线程处理逻辑
    }
}).start();

 

posted on 2017-03-20 13:53  芹derella  阅读(233)  评论(0编辑  收藏  举报