创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法

时间:2022-01-27 22:30:41

第一种:继承thread类,重写run()方法

一般方式:
Demo01.java
/**
* 创建线程的第一种方式:继承thread类,重写run()方法
*
* @author :liuqi
* @date :2018-06-12 15:12.
*/
public class Demo01 {
public static void main(String[] args) {
Rabit r = new Rabit();
Tortoise t = new Tortoise();
// 调用start方法启动线程,不要调用run方法由内部自己调用
r.start();
t.start();
for (int i = 0; i < 5; i++) {
System.out.println("main --> " + i);
}
}
}
Rabit.java
/**
* 兔子线程
*
* @author :liuqi
* @date :2018-06-12 15:14.
*/
public class Rabit extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("rabit run " + i);
}
}
}
Tortoise.java
/**
* 乌龟线程
*
* @author :liuqi
* @date :2018-06-12 15:17.
*/
public class Tortoise extends Thread {
@Override
public void run(){
for (int i = 0; i < 5; i++) {
System.out.println("Tortoise run " + i);
}
}
}

运行结果:

main --> 0
main --> 1
Tortoise run 0
Tortoise run 1
Tortoise run 2
Tortoise run 3
Tortoise run 4
main --> 2
rabit run 0
main --> 3
rabit run 1
rabit run 2
main --> 4
rabit run 3
rabit run 4

匿名内部类方式:

ThreadDemo.java
/**
* 使用匿名内部类的方式创建线程
*
* @author :liuqi
* @date :2018-06-12 15:02.
*/
public class ThreadDemo {
// 继承thread类实现多线程
public static void main(String[] args) {
new Thread() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
/*System.out.println(Thread.currentThread().getName() + "--"
+ x);*/
System.out.println("rabit run " + "--"
+ x);
}
}
}.start();
;
new Thread() {
@Override
public void run() {
for (int x = 0; x < 5; x++) {
/*System.out.println(Thread.currentThread().getName() + "--"
+ x);*/
System.out.println("tortoise run " + "--"
+ x);
}
}
}.start();
;
}
}

运行结果:

rabit run --0
rabit run --1
rabit run --2
rabit run --3
rabit run --4
tortoise run --0
tortoise run --1
tortoise run --2
tortoise run --3
tortoise run --4

参考:https://www.cnblogs.com/fuck1/p/5373700.html

代码地址:https://github.com/yuki9467/TST-javademo/tree/master/src/main/thread