JAVA中的多线程

Java 多线程是实现并发编程的核心技术,允许程序同时执行多个独立的任务,提升资源利用率和程序响应速度。

一、创建线程的 3 种核心方式

  1. 继承 Thread 类

继承 Thread 并重写 run() 方法,调用 start() 启动线程(注意:直接调用 run() 只是普通方法执行,不会开启新线程)。

  1. 实现 Runnable 接口

实现 Runnable 接口并重写 run() ,将实例传入 Thread 构造器启动,推荐使用(避免单继承限制,便于资源共享)

  1. 实现 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:线程执行完毕

三、线程同步与线程安全

当多个线程共享资源时,会出现线程安全问题,需通过同步机制解决:

  1. synchronized 关键字

可修饰方法或代码块,保证同一时刻只有一个线程执行该代码,依赖对象锁实现。

相关推荐
装不满的克莱因瓶1 小时前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
专注于大数据技术栈1 小时前
java学习--Collection的迭代器
java·python·学习
毕设源码-郭学长8 小时前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
梨落秋霜8 小时前
Python入门篇【文件处理】
android·java·python
Java 码农9 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
哈库纳玛塔塔9 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
S***q3779 小时前
Spring Boot管理用户数据
java·spring boot·后端
天“码”行空10 小时前
java面向对象的三大特性之一多态
java·开发语言·jvm
毕设源码-郭学长10 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
好大哥呀10 小时前
Java Web的学习路径
java·前端·学习