java something

不要以为......很遥远
随笔 - 23, 文章 - 1, 评论 - 2, 引用 - 0
数据加载中……

复习下java多线程

好久没搞这个了,今天把以前的笔记整理下,当复习。

Thread类和Runnable接口

多线程是一个程序中可以有多段代码同时运行,那么这些代码写在哪里,如何创建线程对象呢?

    首先,我们来看Java语言实现多线程编程的类和接口。在java.lang包中定义了Runnable接口和Thread类。

 

Runnable接口中只定义了一个方法:

·         public abstract void run()

这个方法要由实现了Runnable接口的类实现。Runnable对象称为可运行对象,一个线程的运行就是执行该对象的run()方法。


      Thread
类实现了Runnable接口,因此Thread对象也是可运行对象。同时Thread类也是线程类,该类的常用构造方法如下:

·         public Thread()

·         public Thread(Runnable target)

·         public Thread(String name)

·         public Thread(Runnable target, String name)
target为线程运行的目标对象,即线程调用start()方法启动后运行那个对象的run()方法,该对象的类型为Runnable,若没有指定目标对象,则以当前类对象为目标对象,name为线程名


 

  线程的创建 

介绍下如何创建和运行线程的两种方法。线程运行的代码就是实现了Runnable接口的类的run()方法或者是Thread类的子类的run()方法,因此构造线程体就有两种方法:
    ·         继承Thread类并覆盖它的run()方法;
    ·        
实现Runnable接口并实现它的run()方法。

  1,继承Thread类创建线程

通过继承Thread类,并覆盖run()方法,这时就可以用该类的实例作为线程的目标对象。下面的程序定义了SimpleThread类,它继承了Thread类并覆盖了run()方法。

程序SimpleThread.java

public class SimpleThread extends Thread{

  public SimpleThread(String str){

    super(str);

}

public void run(){

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

      System.out.println(getName()+" = "+ i);

      try{

         sleep((int)(Math.random()*100));

      }catch(InterruptedException e){}

    }

System.out.println(getName()+ " DONE");

}

}

_____________________________________________________________________________

    SimpleThread类继承了Thread类,并覆盖了run()方法,该方法就是线程体。

程序 ThreadTest.java

public class ThreadTest{

  public static void main(String args[]){

    Thread t1 = new SimpleThread("Runner A");

    Thread t2 = new SimpleThread("Runner B");

    t1.start();

    t2.start();

 }

}

_____________________________________________________________________________

ThreadTest类的main()方法中创建了两个SimpleThread类的线程对象并调用线程类的start()方法启动线程。构造线程时没有指定目标对象,所以线程启动后执行本类的run()方法。

注意,实际上ThreadTest程序中有三个线程同时运行,在应用程序的main()方法启动时,JVM就创建一个主线程,在主线程中可以创建其他线程。

  2,实现Runnable接口创建线程

可以定义一个类实现Runnable接口,然后将该类对象作为线程的目标对象。实现Runnable接口就是实现run()方法。

下面程序通过实现Runnable接口构造线程体。

程序 ThreadTest.java

class T1 implements Runnable{

  public void run(){

    for(int i=0;i<15;i++)

      System.out.println("Runner A="+i);

  }

}

class T2 implements Runnable{

  public void run(){

    for(int j=0;j<15;j++)

      System.out.println("Runner B="+j);

  }

}

public class ThreadTest{

  public static void main(String args[]){

    Thread t1=new Thread(new T1(),"Thread A");

    Thread t2=new Thread(new T2(),"Thread B");

    t1.start();

    t2.start();

  }

}

_____________________________________________________________________________




    

 



posted on 2011-09-01 20:46 Jamie 阅读(362) 评论(0)  编辑  收藏 所属分类: 多线程


只有注册用户登录后才能发表评论。


网站导航: