找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2755

积分

0

好友

359

主题
发表于 12 小时前 | 查看: 3| 回复: 0

多线程(Multi-threading) 是指在一个程序中同时运行多个执行线程的技术。每个线程都是程序中的一个独立执行路径,可以并发执行不同的任务。对于希望提升程序性能、充分利用多核CPU能力的Java开发者来说,掌握多线程是必经之路。关于并发编程的更多系统性讨论,可以在云栈社区的后端与架构板块找到丰富的资源。

普通方法调用与多线程执行对比图

上图清晰地展示了普通方法调用与多线程执行的核心区别。调用 run() 方法只是普通的方法执行,仍在主线程的单一执行路径上;而调用 start() 方法则会启动一个新的线程,与主线程并行交替执行,从而形成多条执行路径。理解这一点是进入Java并发世界的第一步。

案例一:通过继承Thread类创建多线程

在Java中,创建线程最经典的方式之一就是继承 Thread 类。具体步骤如下:

  1. 自定义一个线程类,并让它继承 Thread 类。
  2. 重写 Thread 类中的 run() 方法,将需要并发执行的代码逻辑(线程体)写在这个方法里。
  3. 创建自定义线程类的对象,并调用其 start() 方法来启动线程。

下面是一个完整的代码示例:

package Thread;

//创建一个线程方式一:继承Thread类,重写run()方法,调用start开启线程
//注意:线程开启不一定立即执行,由CPU调度执行
public class TestThread  extends Thread{
    @Override
    public void run() {
        //run方法线程体
        for(int i=0;i<200;i++){
            System.out.println("我在看代码----"+i);
        }
    }

    public static void main(String[] args) {
        //main线程,主线程

        //创建一个线程对象
        TestThread testThread = new TestThread();

        //调用start()方法开启线程
        testThread.start();

        for(int i=0;i<200;i++){
            System.out.println("我在学习多线程--"+i);

        }
    }
}

运行这段代码,你会发现控制台输出的“我在看代码----”和“我在学习多线程--”是交替出现的,这就是主线程和新创建的子线程在并发执行。请务必记住:调用 start() 方法后,线程进入就绪状态,具体的执行时机由操作系统CPU调度器决定,并非立即运行。

线程核心概念

理解了如何创建线程后,我们还需要掌握一些基础但至关重要的核心概念,它们是理解和运用Java多线程的基石:

  • 线程就是独立的执行路径;
  • 在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程;
  • main() 称之为主线程,为系统的入口,用于执行整个程序;
  • 在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为的干预的。
  • 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;
  • 线程会带来额外的开销,如cpu调度时间,并发控制开销。
  • 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致

简单来说,多线程编程不仅仅是“同时做多件事”,它更涉及到资源管理、执行顺序的不确定性以及数据安全等复杂问题。从继承 Thread 类开始,逐步深入到 RunnableCallable 接口以及 JUC 工具包,你会建立起一套完整的并发编程知识体系。




上一篇:OpenClaw中文资源站搭建实战:4个AI并行开发Next.js全栈项目复盘
下一篇:伪中台辨析:如何识别与设计高复用的公共能力架构
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-25 19:40 , Processed in 0.353807 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表