java中线程的创建有两种方式:继承Thread类和实现Runnable接口
一、通过继承Thread类来创建线程类:
步骤1、定义Thread类的子类,并重写该类的run方法,该run方法是该线程的执行体
代表了线程需要完成的任务。
步骤2、创建Thread子类的实例,即创建线程对象。
步骤3、用线程对象的start方法来启动该线程。
public class ThreadOne extends Thread{
private int i;
public void run(){
//重写run方法,run方法的方法体是线程的执行体。
//如果想获取当前线程,直接用this即可。
//Thread对象的getName()方法可返回该线程的名字。
}
public static void main(){
//调用Thread的currentThread方法获取当前线程
//创建并启动一条线程。
new ThreadOne().start();
}
}
二、通过实现Runnable接口来创建线程类:
步骤1、定义Runnable接口的实现类,并重写该接口的run方法。该run方法的方法体
同样是该线程的线程执行体。
步骤2、创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread
对象,该Thread对象才是真正的线程对象。
public class ThreadTwo implements Runnable{
private int i;
public void run(){
//如果想获取当前线程,只能用Thread.currentThread()方法。
}
public static void main(String[] args){
ThreadTwo st = new ThreadTwo();
new Thread(st,"新线程").start();
}
}
三、两种线程创建方式的比较:
1、实现Runnable接口方式:优势:线程只是实现了Runnable接口还可以继承其它的类,多个线程共享同一个target对象,所以非常适合多个线程来处理同一份资源的情况;劣势:编程稍复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
2、继承Thread类的实现方式:优势:编写简单,如果需要访问当前线程,直接使用This即可;劣势:已经继承了Thread类,不能再继承其它的类。
3、几乎所有的多线程的应用都可以采用实现Runnable接口的方式实现。