目录
继承 Thread 类创建线程
class ThreadTest1 extends Thread {
@Override
public void run() {
System.out.println("继承 Thread 接口创建线程");
}
}
public class TestDemo2 {
public static void main1(String[] args) {
ThreadTest1 threadTest1 = new ThreadTest1();
threadTest1.start();
}
}
实现 Runnable 接口创建线程
class ThreadTest2 implements Runnable {
@Override
public void run() {
System.out.println("实现 Runnable 接口创建线程");
}
}
public class TestDemo2 {
public static void main(String[] args) {
Runnable threadTest2 = new ThreadTest2();
Thread thread = new Thread(threadTest2);
thread.start();
}
}
Thread 匿名内部内创建线程
public static void main(String[] args) {
Thread thread = new Thread() {
@Override
public void run() {
System.out.println("Thread 匿名内部类创建线程");
}
};
thread.start();
}
这种方式创建线程本质还是通过继承
Thread
类来创建线程
Runnable 匿名内部类创建线程
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Runnable 匿名内部类创建线程");
}
});
thread.start();
}
这种方式创建线程本质还是通过实现
Runnable
接口来创建线程
lambda 表达式创建线程
public static void main(String[] args) {
Thread thread = new Thread(()->
System.out.println("lambda 表达式创建线程"));
thread.start();
}
使用 Callable 创建线程(需要 FutureTask 类来辅助)
class MyCallable {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// Callable 泛型参数与下面返回值的类型相同
Callable<Object> callable = new Callable<Integer>() {
@Override
public Object call() throws Exception {
// doSomething
return object;
}
};
// 使用 FutureTask 把 Callable 包裹起来, 传 task 对象给 Thread
// FutureTask 起到的作用就是 "未来能获取到一个结果"
// 也就是 Callable 重写方法中执行的结果
FutureTask<Integer> task = new FutureTask<>(callable);
Thread thread = new Thread(task);
thread.start();
// 通过 FutureTask 的 get 方法获取到结果
// 如果线程阻塞, 对应的线程没有执行完, get 就等待阻塞
Integer res = task.get();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)