在 Java 中,Runnable 是一个函数式接口(@FunctionalInterface),用来表示“可运行的任务”。
创建“可运行任务”的常见方式有以下几种:
class MyTask implements Runnable {
@Override
public void run() {
System.out.println("任务执行中...");
}
}
public class Test {
public static void main(String[] args) {
MyTask task = new MyTask();
Thread t = new Thread(task);
t.start();
}
}
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类任务");
}
};
new Thread(task).start();
因为 Runnable 只有一个 run() 方法,可以用 Lambda 简化:
Runnable task = () -> {
System.out.println("Lambda 任务");
};
new Thread(task).start();
或者直接:
new Thread(() -> {
System.out.println("线程执行");
}).start();
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test {
public static void main(String[] args) {
ExecutorService pool = Executors.newFixedThreadPool(2);
pool.execute(() -> {
System.out.println("线程池任务");
});
pool.shutdown();
}
}
| 对比项 | Runnable | Thread |
|---|---|---|
| 是否接口 | ✅ 是 | ❌ 类 |
| 是否可继承其他类 | ✅ 可以 | ❌ 不能 |
| 推荐程度 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
✅ 推荐使用 Runnable + 线程池
Runnable r = () -> {
// 任务逻辑
};
new Thread(r).start();
如果你是想了解 Runnable 和 Callable 的区别 或 如何返回值,也可以继续问我。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。