在开发中,为了方便使用线程,需要随手开线程,最简单的做法就是采用匿名内部类方式使用多线程。 匿名内部类的格式: new 类名或者接口名() { 重写方法; } 本质:是该类的子类对象或者该接口的实现类对象。 new Thread() {代码...}.start(); new Thread(new Runnable() {代码...}) {}.start(); 示例代码如下:
1 package cn.itcast_11;
2
3 /*
4 * 匿名内部类的格式:
5 * new 类名或者接口名() {
6 * 重写方法;
7 * }
8 *
9 * 本质:是该类的子类对象或者该接口的实现类对象。
10 */
11 public class ThreadDemo {
12 public static void main(String[] args) {
13 // 继承Thread类来实现多线程
14 new Thread() {
15 @Override
16 public void run() {
17 for (int x = 0; x < 100; x++) {
18 System.out.println(Thread.currentThread().getName() + ":" + x);
19 }
20 }
21 }.start();
22
23 // 实现Runnable接口来实现多线程
24 new Thread(new Runnable() {
25 @Override
26 public void run() {
27 for (int x = 0; x < 100; x++) {
28 System.out.println(Thread.currentThread().getName() + ":" + x);
29 }
30 }
31 }) {
32 }.start();
33
34 // 面试题
35 // 到底执行的是Thread类的子类对象的run(),还是执行的是Runnable接口的实现类对象的run()呢? 答:是Thread类的子类对象的run() world
36 new Thread(new Runnable() {
37 @Override
38 public void run() {
39 for (int x = 0; x < 100; x++) {
40 System.out.println("hello" + ":" + x);
41 }
42 }
43 }) {
44 @Override
45 public void run() {
46 for (int x = 0; x < 100; x++) {
47 System.out.println("world" + ":" + x);
48 }
49 }
50 }.start();
51
52 }
53 }