第一種:繼承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