匿名内部类创建线程的方式

概述

匿名内部类的使用:匿名内部类就相当于是创建了一个子类对象:编译时看父类,即Thread类,运行时看子类,及重写的run()方法

继承Thread类

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Demo01 {

public static void main(String[] args) {
Thread thread = new Thread() { //定义了变量引用
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "_a");
}
};

new Thread() { //没有定义变量引用,是一个匿名对象
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "_b");
}
}.start();

thread.start();
}

}

运行结果

1
2
Thread-1_b
Thread-0_a

实现Runnable接口

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Demo02 {

public static void main(String[] args) {
//传递的实际参数用匿名内部类来代替

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "_a");
}
});

new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "_b");
}
}).start();

thread.start();
}

}

运行结果

1
2
Thread-1_b
Thread-0_a

参考