实现Runnable接口创建线程类
(1)定义Runnable接口的实现类,并重写该接口的run方法,该run方法的方法体同样是该线程的线程执行体。
(2)创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
(3)调用线程对象的start方法来启动该线程。
// 通过实现Runnable接口来创建线程类 public class SecondThread implements Runnable { private int i; // run方法同样是线程执行体 public void run() { for ( ; i < 100; i++) { // 当线程类实现Runnable接口时, // 如果想获取当前线程,只能用Thread.currentThread()方法。 System.out.println(Thread.currentThread().getName() + " " + i); } } public static void main(String[] args) { for (var i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); if (i == 20) { var st = new SecondThread(); // ① // 通过new Thread(target, name)方法创建新线程 new Thread(st, "新线程1").start(); new Thread(st, "新线程2").start(); } } } }
============================================================================
public class SecondThread implements Runnable { private int i; public void run() { for ( i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); } } public static void main(String[] args) { for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " " + i); if (i == 20) { SecondThread st = new SecondThread(); new Thread(st, "xiancehng---1").start(); new Thread(st, "xiancehng---2").start(); } } } }
> Task :SecondThread.main()
main 0
main 1
main 2
main 3
main 4
main 5
main 6
main 7
main 8
main 9
main 10
main 11
main 12
main 13
main 14
main 15
main 16
main 17
main 18
main 19
main 20
main 21
main 22
main 23
xiancehng---1 0
main 24
xiancehng---2 0
xiancehng---2 1
xiancehng---2 2
xiancehng---1 1
xiancehng---2 3
main 25
xiancehng---2 5
xiancehng---1 4
xiancehng---2 6
main 26
main 27
main 28
xiancehng---2 8
xiancehng---2 9
xiancehng---1 7
xiancehng---2 10
xiancehng---2 12
xiancehng---2 13
xiancehng---2 14
xiancehng---2 15
xiancehng---2 16
xiancehng---2 17
xiancehng---2 18
xiancehng---2 19
xiancehng---2 20
xiancehng---2 21
main 29
main 30
main 31
main 32
main 33
main 34
main 35
xiancehng---2 22
xiancehng---1 11
xiancehng---2 23
main 36
main 37
xiancehng---2 25
xiancehng---1 24
xiancehng---2 26
xiancehng---2 28
main 38
xiancehng---2 29
xiancehng---2 30
xiancehng---2 31
xiancehng---2 32
xiancehng---2 33
xiancehng---2 34
xiancehng---2 35
xiancehng---2 36
xiancehng---2 37
xiancehng---2 38
xiancehng---1 27
xiancehng---2 39
main 39
xiancehng---2 41
xiancehng---1 40
xiancehng---1 43
xiancehng---1 44
xiancehng---1 45
xiancehng---1 46
xiancehng---1 47
xiancehng---1 48
xiancehng---1 49
xiancehng---1 50
xiancehng---1 51
xiancehng---1 52
xiancehng---1 53
xiancehng---1 54
xiancehng---2 42
main 40
xiancehng---2 56
xiancehng---1 55
xiancehng---1 58
xiancehng---1 59
xiancehng---2 57
main 41
xiancehng---2 61
xiancehng---2 62
xiancehng---2 63
xiancehng---2 64
xiancehng---2 65
xiancehng---2 66
xiancehng---2 67
xiancehng---2 68
xiancehng---2 69
xiancehng---2 70
xiancehng---2 71
xiancehng---2 72
xiancehng---2 73
xiancehng---2 74
xiancehng---2 75
xiancehng---2 76
xiancehng---1 60
xiancehng---1 78
xiancehng---1 79
xiancehng---1 80
xiancehng---2 77
main 42
xiancehng---2 82
xiancehng---2 83
xiancehng---2 84
xiancehng---2 85
xiancehng---2 86
xiancehng---2 87
xiancehng---2 88
xiancehng---2 89
xiancehng---2 90
xiancehng---2 91
xiancehng---2 92
xiancehng---2 93
xiancehng---2 94
xiancehng---2 95
xiancehng---1 81
xiancehng---2 96
xiancehng---2 98
xiancehng---2 99
main 43
main 44
xiancehng---1 97
main 45
main 46
main 47
main 48
main 49
main 50
main 51
main 52
main 53
main 54
main 55
main 56
main 57
main 58
main 59
main 60
main 61
main 62
main 63
main 64
main 65
main 66
main 67
main 68
main 69
main 70
main 71
main 72
main 73
main 74
main 75
main 76
main 77
main 78
main 79
main 80
main 81
main 82
main 83
main 84
main 85
main 86
main 87
main 88
main 89
main 90
main 91
main 92
main 93
main 94
main 95
main 96
main 97
main 98
main 99