疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java实现线程操作的两种方法


 

   

  方法一:继承Thread类,复写run()方法

  继承Thread类,复写run()方法

  class FirstTread externs Thread{

  @overrid

  public void run(){

  for(int i = 0; i<100; i++){

  System.out.println("第一种方法 : " + i );

  }

  }

  }

  实例化FirstThread对象,调用FirstThread对象中的start()方法

  class Test{

  public static void main(String[] args) {

  //生成线程类的对象

  FirstThread ft = new FirstThread();

  //执行start()方法,启动线程

  ft.start();

  }

  }

  方法二:实现Runnable接口,实现run()方法

  Runnable接口的实现类 RunnableImpl。

  class RunnableImpl implements Runnable{

  @overrid

  public void run(){

  for(int i = 0; i<100; i++){

  System.out.println("第二种方法 : " + i );

  }

  }

  }

  将RunnableImpl的对象作为参数传给Thread对象,用start()方法启动线程。

  class Test{

  public static void main(String[] args) {

  //生成一个Runnable接口实现类的对象

  RunnableImpl ri = new RunnableImpl();

  //生成一个Thread对象,并将Runnable接口的实现类作为参数

  //传递给Thread对象

  Thread t = new Thread(ri);

  //执行start()方法

  t.start();

  }

  }

  总结

  尽量使用第二种方法,原因有以下几点:

  Java是单继承,能少创建一个类就不要创建

  增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。方法二是将线程和线程体分开,更有利于程序的模块化降低耦合度

  最重要一点是,适合多个相同的程序代码的线程去处理同一个资源。如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享