首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 多线程入门:进程与线程关系、Thread 继承创建线程、运行特性解析

     編輯:Java 綜合教學

Java 多线程入门:从进程到线程创建

多线程是 Java 并发编程的基石。本文厘清进程与线程概念、JVM 启动线程模型、Thread 继承创建线程的标准姿势、运行时随机性特性与常见误区。

核心概念

  • 进程:正在执行的程序,拥有独立内存空间,至少包含一个线程
  • 线程:进程内的执行单元,共享进程内存(堆、方法区),私有栈、程序计数器
  • JVM 启动:java.exe 进程启动 → 主线程执行 main() + GC 线程 + JIT 编译线程等

创建线程方式一:继承 Thread

// 1. 定义子类
class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 60; i++) {
            System.out.println("MyThread run " + i);
        }
    }
}

// 2. 启动
public class ThreadDemo {
    public static void main(String[] args) {
        MyThread t = new MyThread();  // 新建线程对象
        t.start();                    // 启动线程 → JVM 调用 run()
        for (int i = 0; i < 60; i++) {
            System.out.println("main " + i);
        }
    }
}

关键点解析

运行特性:随机性与时间片

  • CPU 以极快速度在线程间切换(时间片轮转),宏观呈现「并发」
  • 单核某时刻仅一线程执行,多核可真并行
  • 输出顺序**不可预测**:取决于调度器、时间片、系统负载
  • Thread.yield()、sleep()、join()、锁竞争均影响调度

常见误区

  1. 直接调用 run():最常见错误,导致单线程顺序执行
  2. 匿名内部类未重写 run():空实现,线程启动即结束
  3. 共享变量无同步:多线程读写同一变量引发可见性/原子性问题

扩展:方式二——实现 Runnable(推荐)

class MyTask implements Runnable {
    @Override public void run() { /* 任务代码 */ }
}
new Thread(new MyTask()).start();  // 任务与线程分离,支持线程池复用

优势:避免单继承限制、任务可提交 ExecutorService、便于 Lambda 表达式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
调用效果
t.start()① 向 JVM 注册新线程 ② 分配栈内存 ③ 异步调用 run()
t.run()普通方法调用,**当前线程**同步执行,**不创建新线程**