创建线程的两种方式
第一种:继承Thread类。第二种:实现Runable接口,
创建一个实现Runable的类或是继承Thread类子类的实例,重写run方法,方法体中的内容就是新线程要执行的业务逻辑代码,创建该类的实例,并根据此类创建一个具体的Thread实例,该实例调用start方法就实现了新线程的启动
(1)通过实现Runable接口实现的方式
public class NewThread1 {
public static void main(String[] args) {
//首先创造继承Thread的类的子类或是实现Runnable接口的类的对象,
NewThreadT r1 = new NewThreadT();
//把该对象作为参数创建新的线程
Thread thread = new Thread(r1);
//每一个新线程都是通过一个特定的Thread对象来执行的,执行的是run方法体中的内容,通过start实现
thread.start();//使用start方法实现新线程的启动,新线程执行的代码主体为实现runable接口的类或是继承Thread类的子类run方法体中的代码
// thread.run();//如果让线程类直接调用run方法,则没有创建新的线程,相当于方法的调用。
for (int i = 0; i < 10; i++) {
System.out.println("主线程名字"+Thread.currentThread().getName());
}
}
static class NewThreadT implements Runnable{
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("创建的新线程名字"+Thread.currentThread().getName());
}
}
}
(2)通过继承Thread类实现的方式
public class NewThread2 {
public static void main(String[] args) {
Newthread2in inclass = new Newthread2in();
Thread thread = new Thread(inclass, "thread1");
thread.start();
}
static class Newthread2in extends Thread{
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("测算金额"+Thread.currentThread().getName());
}
}
}
}
两种方式的选择,应该更多的选择继承Runable接口,因为继承方式只能是实现单继承,而接口可以多个实现,实现多个接口,并且实现Runable更符合面向对象。