现在的位置: 首页 > 综合 > 正文

java中通过Thread类来创建线程

2013年10月16日 ⁄ 综合 ⁄ 共 1400字 ⁄ 字号 评论关闭

在java中线程的创建有两种方法:继承Thread类和Runnable接口。下面介绍一下通过Thread类创建线程:

继承Thread类:

      Thread类中有两个最主要的方法:run()和start()。

      run()方法包含线程运行时要执行的任务,即线程执行体。

      start()方法从名称就可以看出,它的作用是用于启动线程。

      继承Thread类创建并启动多线程的步骤为:

      首先,定义Thread类的子类,并覆盖该类的run()方法。

      其次,创建Thread子类的实例,即创建线程的对象。

      最后,用线程对象的start()方法来启动线程。

实例说明如下:

  1. public class Thread1 extends Thread{   
  2.     public void run(){   
  3.         System.out.println(this.getName());   
  4.     }   
  5.     public static void main(String args[]){   
  6.         System.out.println(Thread.currentThread().getName());   
  7.         Thread1 thread1 = new Thread1();   
  8.         Thread1 thread2 = new Thread1();   
  9.         thread1.start();   
  10.         thread2.start();   
  11.     }   
  12. }  

程序运行结果为:

main
Thread-0
Thread-1

       程序中多个线程并发执行时,程序的运行结果是不确定的。因为多个没有同步约束关系的线程并发执行时,线程调度不能保证哪个线程先执行,也不能保证先执行的线程的持续时间。线程对象调用start()方法后,线程处于可运行状态(Runnable),并没有运行,一旦得到CPU时间片,就开始执行run()方法,run()方法执行完毕,该线程结束。因此可能出现的情况也有一个线程先启动,但是该线程却在另一个线程执行完毕后才执行完毕。线程启动后唯一能够保证的就是:每个线程都将启动,每个线程都会执行结束。

       上个程序分析如下:

        1.任何一个java程序都必须有一个主线程,主线程不是由run()方法决定的,而是由main()函数来决定的。main()方法的执行体代表主线程的执行体。

        2.上面程序用到线程的两个方法:
Thread.currentThread():currentThread()是Thread类的静态方法,该方法总是返回当前正在执行的线程对象的引用。
getName():该方法是Thread类的实例方法,该方法返回调用该方法的线程的名字。
       3.程序可以通过setName(String name)方法为线程设置名字,也可以通过getName()方法返回指定线程的名字。在默认情况下,主线程的名字为main,用户启动的多条线程的名字依次为:Thread-0、Thread-1、Thread-2、……、Thread-n等。

       4.一个线程只能被启动一次。否则会抛出java.lang.IllegalThreadStateException异常。

 

 



 

 

抱歉!评论已关闭.