在 Java 中,多线程指的是程序中同时运行多个线程。下面从概念 → 创建方式 → 启动方式 → 简单示例 → 注意事项来讲解。
main)Thread 类(最简单)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(); // 启动线程
}
}
⚠️ 注意:
start(),不是 run()run() 只是普通方法Runnable 接口(推荐)class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Runnable线程:" + Thread.currentThread().getName());
}
}
public class Test {
public static void main(String[] args) {
Thread t = new Thread(new MyRunnable());
t.start();
}
}
✅ 优点:
Callable + Future(有返回值)import java.util.concurrent.*;
public class Test {
public static void main(String[] args) throws Exception {
Callable<Integer> task = () -> {
return 1 + 2;
};
ExecutorService pool = Executors.newSingleThreadExecutor();
Future<Integer> future = pool.submit(task);
System.out.println("结果:" + future.get());
pool.shutdown();
}
}
创建线程对象
↓
调用 start()
↓
JVM 分配栈空间
↓
执行 run()
Thread.sleep(1000); // 休眠 1 秒
thread.join(); // 等待线程结束
Thread.yield(); // 让出 CPU
thread.setPriority(10); // 优先级(不一定生效)
ExecutorService pool = Executors.newFixedThreadPool(3);
pool.execute(() -> System.out.println("线程池任务"));
pool.shutdown();
❌ 直接调用 run()(不是多线程)
❌ 多次调用 start()(会抛异常)
❌ 共享变量不加锁(线程安全问题)
| 方式 | 是否推荐 | 特点 |
|---|---|---|
| Thread | ❌ | 简单但不灵活 |
| Runnable | ✅ | 最常用 |
| Callable | ✅ | 有返回值 |
| 线程池 | ✅✅ | 企业级用法 |
如果你愿意,我可以:
你想学哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。