18.2 实现线程的两种方式
Posted studycode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
三、实现Runnable接口
以上是关于18.2 实现线程的两种方式的主要内容,如果未能解决你的问题,请参考以下文章