在 Java 中实现多线程主要有 以下几种常见方式,从最基础到更现代的用法都有。下面按使用频率和学习顺序给你梳理。
适合:入门理解线程概念
class MyThread extends Thread {
@Override
public void run() {
System.out.println("线程名:" + Thread.currentThread().getName());
}
}
public class Test {
public static void main(String[] args) {
MyThread t1 = new MyThread();
t1.start(); // 启动线程(不是调用 run)
}
}
✅ 优点:简单
❌ 缺点:Java 单继承,不灵活
适合:大多数业务场景
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("线程执行中...");
}
}
public class Test {
public static void main(String[] args) {
Thread t = new Thread(new MyRunnable());
t.start();
}
}
✅ 优点:
适合:需要返回结果或抛出异常
import java.util.concurrent.*;
class MyCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
return 1 + 2;
}
}
public class Test {
public static void main(String[] args) throws Exception {
ExecutorService pool = Executors.newSingleThreadExecutor();
Future<Integer> future = pool.submit(new MyCallable());
System.out.println(future.get()); // 3
pool.shutdown();
}
}
✅ 优点:
适合:高并发、性能要求高
ExecutorService pool = Executors.newFixedThreadPool(3);
for (int i = 0; i < 5; i++) {
pool.execute(() -> {
System.out.println(Thread.currentThread().getName());
});
}
pool.shutdown();
✅ 优点:
⚠️ 推荐用 ThreadPoolExecutor 手动创建,而不是 Executors
new Thread(() -> System.out.println("Hello")).start();
| 方法 | 作用 |
|---|---|
start() |
启动线程 |
sleep() |
休眠 |
join() |
等待线程结束 |
yield() |
让出 CPU |
interrupt() |
中断线程 |
synchronizedLockvolatileConcurrentHashMap)✅ 学习顺序:
如果你愿意,我可以:
你现在是学习阶段还是项目中使用?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。