线程的创建有两种方法。一种方法是创建Thread类的子类,并在子类中重写run方法。如下:
// Thread类的子类
public class MyThread extends Thread{
// 无参构造方法
public MyThread(){}
// 带参构造方法
public MyThread(String name){
super(name);
}
public void run() {
System.out.println(getName()+
": 这是Thread类的子类");
}
}
public class NewThread1 {
public static void main(String[] args) {
// 创建线程并启动
new MyThread().start();
new MyThread("第2个线程").start();
}
}
另一种方法是创建Runable接口的实现类,并实现run方法,再以该类的对象作为参数传递,创建Thread对象并启动线程。具体如下:
public class MyRunnable implements Runnable {
public void run() {
System.out.println(
Thread.currentThread().getName()+
": 这是Runnable的实现类");
}
}
public class NewThread2 {
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
new Thread(mr).start();
new Thread(mr,"第2个线程").start();
}
}
第二种方式较第一方式更为常用,因为第二种方式实现的是接口,可以实现多继承,而且创建的多个线程可以共享同一个Runnable实现类的对象,从而实现资源共享。
当然,创建线程的时候也可根据需要采用匿名类的方式。如下:
public class NewThreadTest3 {
public static void main(String[] args) {
// 继承Thread类
new Thread(){
public void run(){
System.out.println(
"匿名类新建线程1");
}
}.start();
// 实现Runnable接口
new Thread(new Runnable(){
public void run() {
System.out.println(
"匿名类新建线程2");
}
}).start();
}
}