18.2 实现线程的两种方式

一、概述
  在Java中主要提供两种方式实现线程,分别为继承java.lang.Thread类与实现java.lang.Runnable接口。

二、继承Thread类
  a、Thread类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread类实例。
  Thread类中常用的两个构造方法如下:
    public Thread():创建一个新的线程对象。
    public Thread(String threadName):创建一个名称为threadName的线程对象。
  b、完成线程真正功能的代码放在类的run()方法中,当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread类中的start()方法执行线程,也就是调用run()方法。
  c、Thread对象需要一个任务来执行,任务是指线程在启动时执行的工作,该工作的功能代码被卸载run()方法总。
  run()方法必须使用以下语法格式:
    public void run(){
    }
  d、当执行一个线程程序时,就自动产生一个线程,主方法正式在这个线程上运行的。当不在启动其它线程是,该程序就是单线程程序,如在本章已签的程序都是单线程程序。主方法线程启动有java虚拟机负责,程序员负责启动自己的线程。
  代码如下:
    public static void main(String[] args){
      new ThreadTest().start();
    }
注意:(1)、如果start()方法调用一个已经启动的线程,系统将抛出IllegalThreadStateException异常。
      (2)、在main方法中,使线程执行需要调用Thread类中的start()方法,strat()方法调用被覆盖的run()方法,如果不调用start()方法,线程永远都不会启动,在主方法没有调用start()方法之前,Thread对象只是一个实例,而不是一个真正的线程。

 1 package com.lzw;
 2 
 3 public class ThreadTest extends Thread {    //指定继承Thread类
 4     private int count = 10;
 5     public void run() {        //重写run()方法
 6         while(true) {
 7             System.out.print(count + "  ");
 8             if (--count == 0) {
 9                 return;
10             }
11         }
12     }
13     public static void main(String[] args) {
14         new ThreadTest().start();    
15     }
16 }
View Code

三、实现Runnable接口

猜你喜欢

转载自www.cnblogs.com/studycode/p/9573245.html