Java 多线程是实现并发编程的核心技术,允许程序同时执行多个独立的任务,提升资源利用率和程序响应速度。
一、创建线程的 3 种核心方式
- 继承 Thread 类
继承 Thread 并重写 run() 方法,调用 start() 启动线程(注意:直接调用 run() 只是普通方法执行,不会开启新线程)。
- 实现 Runnable 接口
实现 Runnable 接口并重写 run() ,将实例传入 Thread 构造器启动,推荐使用(避免单继承限制,便于资源共享)
- 实现 Callable 接口 + FutureTask
适合需要返回执行结果的场景, Callable 的 call() 方法可抛出异常,通过 FutureTask 获取结果二、线程的生命周期
Java 线程有 6 种状态,定义在 Thread.State 枚举中:
NEW:线程已创建但未调用 start()
RUNNABLE:线程正在执行或等待 CPU 调度
BLOCKED:线程等待获取对象锁(如进入 synchronized 代码块失败)
WAITING:无限期等待唤醒(如调用 Object.wait() 、 Thread.join() )
TIMED_WAITING:限时等待(如 Thread.sleep(ms) 、 Object.wait(ms) )
TERMINATED:线程执行完毕
三、线程同步与线程安全
当多个线程共享资源时,会出现线程安全问题,需通过同步机制解决:
- synchronized 关键字
可修饰方法或代码块,保证同一时刻只有一个线程执行该代码,依赖对象锁实现。