- 当需要启动一个线程去完成任务的时候,通过会通过 java.lang.Runnable 接口来定义任务内容,并使用 java.lang.Thread 类来启动该线程,代码如下:
package com.github.demo1;
/**
* @author maxiaoke.com
* @version 1.0
*
*/
public class Test {
public static void main(String[] args) {
// 匿名内部类
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("多线程任务执行!!!!");
}
};
// 启动线程
new Thread(runnable).start();
}
}
- 本着“一切皆对象”的思想,这样的做法无可厚非的:首先创建 Runnable 接口的匿名内部类对象来指定任务内容,然后将其交给一个线程来启动。
- 代码分析:
- 对于Runnable 的匿名内部类的用法,可以分析出以下几点:
- ① Thread 类需要 Runnable 接口作为参数,其中的抽象 run 方法是用来指定线程任务内容的核心。
- ② 为了指定 run 的方法体,不得不 需要 Runnable 接口的实现类。
- ③ 为了省去定义一个 Runnable 实现类的麻烦,不得不 实现匿名内部类。
- ④ 为了覆盖重写抽象 run 方法,其方法名称、方法参数、方法的返回值 不得不 重写一遍,且不能写错。
- 但是,实际上,方法体才是关键所在 。