实现Runnable接口后需通过Thread对象执行:先定义实现类并重写run()方法,再将其实例传入Thread构造器,调用start()启动新线程;可用Lambda简化;切勿直接调用run()或重复start()。

实现 Runnable 接口后,不能直接运行,必须交给 Thread 对象去执行。核心是:把 Runnable 实例传给 Thread 构造器,再调用 start() 方法。
创建 Runnable 实现类
先定义一个类实现 Runnable 接口,并重写 run() 方法,里面写要在线程中执行的逻辑:
示例:
class MyTask implements Runnable {
public void run() {
System.out.println("任务正在运行,线程名:" + Thread.currentThread().getName());
}
}
用 Thread 包装并启动
创建 Thread 对象时,把 Runnable 实例作为参数传入;之后调用 start()(不是 run())才能真正启动新线程:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
立即学习“Java免费学习笔记(深入)”;
new Thread(new MyTask()).start();- 也可以起个名字:
new Thread(new MyTask(), "Worker-1").start(); - 如果只是临时用一次,可用匿名内部类或 Lambda 表达式简化
使用 Lambda 简化写法(推荐)
JDK 8+ 支持函数式接口,Runnable 正好只有一个抽象方法,可直接用 Lambda:
new Thread(() -> System.out.println("Hello from thread!")).start();- 更清晰的写法:
Runnable task = () -> doSomething(); new Thread(task).start();
常见误区提醒
容易出错的地方:
- 调用
run()方法不会启动新线程,只是普通方法调用,仍在当前线程执行 - 一个
Thread实例只能start()一次,重复调用会抛IllegalThreadStateException -
Runnable本身不包含线程调度能力,它只是任务定义;线程的生命周期由Thread控制

















