实现方法一:
定义类实现Runnable的接口,重写其中的run方法,然后进行,在调用的时候需要将Runnable方法放置在Thread中当做构造函数的参数,然后再调用Thread实例的start方法,即可打开启动一个线程(不要调用重写的run方法)
import java.io.*;
import java.lang.*;
import java.util.*;
public class hehe {
public static void main(String args[]){
Runner ob0 = new Runner();
Thread ob = new Thread(ob0);
ob.start();
for(int i = 0;i < 500;++ i){
System.out.println(i);
}
}
}
public class Runner implements Runnable{
public void run(){
for(int i = 0;i < 500;++ i){
System.out.println("-----"+i);
}
}
}
实现方法二:
既然是,通过Thread类来开启线程,那么就可以定义类直接继承Thread类,在通过对象调用start()方法,开始一个线程
import java.io.*;
import java.lang.*;
import java.util.*;
public class hehe {
public static void main(String args[]){
Runner ob0 = new Runner();
ob0.start();
for(int i = 0;i < 500;++ i){
System.out.println(i);
}
}
}
public class Runner extends Thread{
public void run(){
for(int i = 0;i < 500;++ i){
System.out.println("-----"+i);
}
}
}
小结:
相比较而言,使用实现Runnable接口而言有着巨大的优势:
1.可以打破继承Thread(单继承)的局限性
2.继承Thread不能够实现资源的共享,而Runnable可以实现对同一个对象的操作(可以吧买票系统当做例子,各个线程对票数的访问,一个人买完票后所有人看到的票都会减少一个),而继承Thread资源是相互独立的