【面试考点】Java线程的6种状态与创建线程的4种方式

Java基础原理与面试高频考点 阅读详情


Java中的线程状态和工作原理是理解并发编程的关键部分。首先,我们来看Java线程的六种状态:

  1. NEW(新建): 线程对象已创建,但尚未启动。
  2. RUNNABLE(可运行): 线程正在Java虚拟机中运行。这包括在Java虚拟机内部等待获取监视器锁(进入同步块/方法)的线程,以及等待JVM调度以获取CPU的线程。
  3. BLOCKED(阻塞): 线程在尝试进入一个同步块/方法时,无法获取监视器锁,则进入阻塞状态。
  4. WAITING(等待): 线程在等待另一个线程执行特定动作(通常是调用notify()或notifyAll()方法)。
  5. TIMED_WAITING(限时等待): 与WAITING状态类似,但线程在指定的时间间隔后会自动恢复。
  6. TERMINATED(终止): 线程执行完毕或因异常退出。

Java创建线程的四种方式

1. 继承Thread类

解决思路:通过继承Thread类并重写run()方法,然后创建该类的实例并调用其start()方法来启动线程。

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("线程运行中...");
    }

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}
2. 实现Runnable接口

下滑查看解决方法

解决思路:通过实现Runnable接口并重写run()方法,然后创建该接口的实例,并将其传递给Thread类的构造函数,最后调用start()方法来启动线程。

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("线程运行中...");
    }

    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}
3. 实现Callable接口(结合Future和FutureTask)

解决思路:Callable接口与Runnable类似,但允许在任务完成后返回一个结果,并且可以抛出检查异常。通过Future接口可以获取该结果。通常与FutureTask结合使用。

import java.util.concurrent.*;

public class MyCallable implements Callable<String> {
    @Override
    public String call() throws Exception {
        return "线程执行结果";
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<String> task = new FutureTask<>(new MyCallable());
        new Thread(task).start();
        System.out.println("线程结果: " + task.get());
    }
}
4. 使用线程池(ExecutorService)

解决思路:线程池用于管理一组工作线程,可以复用线程,减少线程创建和销毁的开销。ExecutorService接口提供了管理线程池的方法。

import java.util.concurrent.*;

public class ThreadPoolExample {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executor = Executors.newFixedThreadPool(5); // 创建一个固定大小的线程池

        Future<String> future = executor.submit(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return "线程执行结果";
            }
        });

        System.out.println("线程结果: " + future.get());

        executor.shutdown(); // 关闭线程池
    }
}

以上四种方式都是Java中创建线程的常用方法,它们各自有不同的应用场景和优缺点。在实际开发中,需要根据具体需求选择最合适的方式。

Java多线程与线程池面试核心考点解析 多线程编程是Java高并发能力的核心技术基础,其核心原理涉及线程生命周期管理、同步机制与资源调度策略。从JVM内存模型到CPU指令重排序,良好的线程设计能显著提升系统吞吐量,尤其在电商秒杀、实时交易等高并发场景中表现突出。线程池作为重要资源管理工具,通过corePoolSize、workQueue等参数实现任务分流与拒绝策略,避免OOM等生产事故。本文结合大厂面试真题,详解线程安全实现、死锁排查等实战要点,并对比ForkJoinPool的工作窃取算法优势,帮助开发者掌握从基础到高阶的并发编程知识体系。 阅读详情

相关推荐

佳能C3025打印机扫描方法

佳能C3025彩色打印机扫描方法 步骤一、如果打印机处于休眠状态,可按图中标记的按钮唤醒打印机; 然后点击屏幕上的【扫描】 步骤二、扫描类型选择【文件】 步骤三、点击屏幕上的【地址簿】 步骤四、此时屏幕胡看到名字,如果看不到自己的名字,可往下滑动直到看到自己的名字,然后点击自己的名字,再点击右下角的【应用】 步骤五、点击【发送设置】,可看到文件格式为PDF,点击可以选择JPEG的图片格式。...

weixin_46019317的博客 2万+

Java多线程面试通关秘籍:从入门到实战的5大核心考点(附高频真题解析)

/ 注意:实际开发慎用!会导致无法继承其他类@OverrideSystem.out.println("线程启动!");// 使用方式多线程就像学游泳,看一百遍教程不如自己写几个demo!建议把本文代码都手敲一遍,遇到问题欢迎在评论区讨论(24小时在线回复!下期预告:《Spring循环依赖的九种破解姿势》,关注不迷路~💡小贴士:面试被问多线程时,可以主动画状态转换图,瞬间提升面试官好感度!

papaquebec的博客 1790

DNA pull-down技术避坑指南:从探针设计到质谱验证的完整实验方案

本文提供了一份详尽的DNA pull-down技术实战避坑指南,涵盖从探针设计、生物素标记、磁珠选择与预处理,到结合洗脱优化及下游质谱验证或Western Blot验证的全流程。重点解析了如何通过精细操作降低非特异性结合、提高实验特异性与重复性,并对比了质谱与WB两种验证路径的适用场景,旨在帮助研究者构建稳健可靠的DNA-蛋白质互作研究体系。

weixin_29274337的博客 495

Java 多线程面试必问

回答:当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。【摘自深入理解Jvm虚拟机】实现线程安全的方式有三大种方法,分别是互斥同步、非阻塞同步和无同步方案。互斥同步:同步是指多个线程并发访问共享数据时,保证共享数据在同一时刻只被一条(或一些,当使用信号量的时候)线程使用。

weixin_56619519的博客 1980

无人机开发平台全解析:从开源飞控到企业级应用实战指南

无人机开发平台是无人机从飞行器演变为智能空中机器人的核心,其本质是提供了一套标准化的软硬件接口与工具链,使开发者能够基于稳定可靠的底层系统,专注于上层应用创新。从技术原理上看,一个完整的开发平台通常包含飞行控制器、机载计算机、传感器套件等硬件层,以及飞控固件、机器人操作系统(ROS/ROS 2)、软件开发套件(SDK)等软件层,通过分层架构实现飞行控制、感知决策与任务执行的解耦。其技术价值在于大幅降低了无人机行业应用的开发门槛,使开发者无需从零构建飞行控制系统,即可快速实现自动巡检、精准农业、物流配送等复杂

weixin_28712491的博客 412

2025-03-21(DS复习): Databricks 的技术架构

Databricks 的技术架构以 ​为核心,构建了一套高度集成、可扩展且支持多云环境的统一分析平台。其架构设计注重存储与计算的深度融合,并通过丰富的服务层功能简化了数据工程、机器学习和数据科学的工作流。

baidu_24377669的博客 1428

【多线程篇03】:一篇看懂线程的6种状态

本文详细解析了Java线程的六种状态及其转换机制,基于JDK Thread.State枚举定义。线程状态包括:NEW(新建)、RUNNABLE(可运行)、BLOCKED(阻塞)、WAITING(无限等待)、TIMED_WAITING(限时等待)和TERMINATED(终止)。关键转换路径涵盖:NEW通过start()进入RUNNABLE;RUNNABLE与BLOCKED状态在锁竞争时的相互转换;RUNNABLE与WAITING/TIMED_WAITING状态在wait/notify机制下的切换……

lyh2004_08的博客 1834

OCS2 移动机械臂深度解析:ocs2_mobile_manipulator 与 ocs2_mobile_manipulator_ros 源码全拆解

摘要:本文深入解析OCS2移动机械臂MPC控制框架的两个核心工具包。ocs2_mobile_manipulator负责算法建模,通过MobileManipulatorInterface统一构建最优控制问题,支持4种机械臂模型并实现自动维度推导;ocs2_mobile_manipulator_ros负责ROS集成,包含MPC求解、虚拟跟踪等4个核心节点。文章详细剖析了工具包分工、最优控制建模架构(含动力学、代价约束设计)、ROS运行管线、参数配置映射,并提供了高效的源码阅读顺序建议,帮助开发者快速掌握移动机械

m0_73309445的博客 655

艰辛挺过字节Android研发岗4轮面试,收到sp offer(月薪45k)!揭秘字节面试流程及考点

前段时间,有个朋友又出去面试了,这次他面试目标比较清晰,面的都是业务量大、业务比较核心的部门。前前后后去了不少公司,几家大厂里,他说给他印象最深的是字节。 3 轮技术面 + 1 轮 HR 面,他最终拿到了 45k*16薪 的 Offer。 第一轮主要考察 Java 基础,二、三轮注重对应技术的掌握,以及对过往项目的业务理解。之所以令他印象深刻,是因为每轮都聊了一个半小时以上,确实让他受益匪浅。 他最终选择字节,除了这是核心项目之外,还有一个原因,字节的福利号称业内最好,薪资也是同类公司中最高。..

嘴巴吃糖了 6468

LD分析实战:基于Plink和R的连锁不平衡计算与可视化全流程

本文详细介绍了基于Plink和R的连锁不平衡(LD)分析全流程,包括基因型数据预处理、LD计算参数设置及结果可视化技巧。通过实战案例解析PLINK文件格式转换、r²值计算关键参数,并展示如何使用ggplot2绘制高质量LD热图,帮助研究人员高效完成基因组关联分析。

weixin_29074295的博客 320

Electron vue3 - 使用SerialPort与串口交互教程,计算机串行端口(COM口、USB转串口等)进行通信连接读取或写入Arduino、单片机、PLC、扫码枪、打印机、老式调制解调器!

实战Electron使用SerialPort与串口交互详细全过程,Electron-vue3与串口交互示例,Electron vue使用serialport实现串口交互通讯,Electron-vue使用serialport连接本地串口,electron-vue 台称串口对接 SerialPort,electron串口调试工具,electron+vue+serialport实现串口通信,串口通信serialport使用和调试,electron-vue使用serialport串口通信及踩过的坑(已解决!)ele

🏆 前端领域优质创作者 4641

Java线程池状态终极指南:位运算设计&&面试考点&&全流程图解

------------------------>| (设置SHUTDOWN状态)|------------------------>| (检查TIDYING条件)实践中如需'重启'线程池,正确做法是创建新实例而非重置状态,这能保证资源管理的纯粹性。理解了状态的重要性后,我们接下来揭秘线程池如何用3个比特位高效管理状态与线程数。|------------------------>| (中断空闲线程)线程池需要在不同状态下合理管理线程资源,避免无限制创建线程导致OOM(如。

2301_78447438的博客 1023

AI 实战篇 |基于 AI开放平台实现 人脸识别对比 功能,超详细教程【附带源码】

本篇文章来学习一下怎样使用 Unity实现简单地人脸识别 功能。 关于人脸识别,我们可以选择很多平台的SDK接入Unity来实现人脸识别的功能。

努力前行,总会成为自己心中的那道光 5万+

Java 高频面试考点(下)

实现,可拦截四大核心接口:Executor(执行器)、StatementHandler(SQL 语句处理器)、ParameterHandler(参数处理器)、ResultSetHandler(结果集处理器)。核心组件:DispatcherServlet(调度中心)、HandlerMapping(映射请求与处理器)、HandlerAdapter(适配执行处理器)、ViewResolver(解析视图)。Spring 事务管理的核心是。MyBatis 插件基于。

m0_61261153的博客 1121

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java面试中关于线程有什么知识点

Java多线程与并发编程面试要点精粹: 本文系统梳理了Java多线程核心知识点,涵盖基础概念、线程同步、线程池使用、并发工具及JMM模型等面试高频内容。重点包括:4种线程实现方式(推荐Runnable/Callable/线程池)、线程生命周期五大状态、同步机制(synchronized/volatile/Lock)、线程池参数配置(核心三参数:corePoolSize/maxPoolSize/workQueue),以及JUC工具包中的CountDownLatch/CyclicBarrier等实用组件。特别解

m0_74023628的博客 1084

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java NIO 面试全解析:9大核心考点与深度剖析

NIO的学习关键在于动手实践!建议通过实现简单的RPC框架或代理服务器来加深理解,这将成为你面试中最有力的证明。💻。

真实的菜的博客 1338

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

10、Java 基础硬核复习:多线程(并发核心)的核心逻辑与面试考点

本文系统梳理了Java多线程编程的核心知识点,分为三大支柱(线程创建、安全、通信)和四大模块(基础概念、生命周期、同步机制、JDK5特性)。重点包括:4种线程创建方式、5种线程状态转换、线程安全解决方案(synchronized和Lock锁)、线程通信机制(wait/notify)。高频面试考点涵盖run()与start()区别、Runnable与Callable对比、sleep与wait差异、synchronized与Lock优劣、死锁预防及线程安全单例模式实现。建议通过画状态转换图、编写经典案例代码(如

m0_60277481的博客 767

Java多线程与并发编程在面试中的高频考点

作者:代码界的小白 链接:Java多线程与并发编程在面试中的高频考点!_笔经面经_牛客网 来源:牛客网 《Java面试必知必会》系列已经更新两章了,Java基础知识面试高频考点和Java集合面试高频考点,反馈都还不错,后序继续推出,本文主要是针对Java中的多线程与并发编程知识在面试中的高频考点进行​分享。里面的连环追问真的是百分百还原面试​情景,希望大家阅读完后有所收获,记得点赞、收藏分享给身边的同学、朋友哦! 推荐阅读 Java基础在面试中的高频考点! Java集合在面试中的高频考点! 大.

xiaolicxy的博客 143

Java高并发核心:AQS原理与面试必考点解析

文章深入解析Java高并发核心机制AQS(AbstractQueuedSynchronizer)的工作原理,从锁的状态管理、队列结构到加锁与释放流程逐一剖析,并结合实际案例讲解如何自定义同步器。此外,文章还总结了AQS在面试中的必考点,包括线程协调机制、公平锁与非公平锁的区别以及常见问题的解决方案,帮助读者全面掌握这一高并发核心技术,轻松应对技术面试挑战...

yanpeng2580的博客 664

Java面试 32个核心必考点完全解析

目录 课程预习 1.1 课程内容分为三个模块 1.2 换工作面临问题 1.3 课程特色 课时1:技术人职业发展路径 1.1 工程师发展路径 1.2 常见技术岗位划分 1.3 面试岗位选择 1.4 常见...

weixin_34258838的博客 694

【Java零基础连载16】Java多线程入门|线程原理、创建方式、线程状态、线程安全、锁机制详解

前面我们学完了Java基础核心全套内容:语法、集合、泛型、IO流、异常处理,已经具备了基础业务编码能力。但目前我们写的所有代码,都是单线程串行执行:代码从上到下逐行执行,上一段代码阻塞,下一段代码无法执行,执行效率极低。在实际项目中:批量处理上万条数据接口需要同时处理多个用户请求异步发送短信、日志记录、消息推送后台定时任务、文件异步解析单线程完全无法满足性能需求,多线程技术就是为了解决程序并发执行、提升资源利用率、提高系统吞吐量而生。

荏苒夕阳的博客 345

Java多线程实战:3种线程创建方式+IO/集合手把手实操(面试高频考点)

多线程是提升程序效率的关键(比如并发读取文件、批量处理数据),而“创建线程”是多线程开发的第一步。Java中3种线程创建方式各有适配场景,面试常问“不同方式的区别”“什么时候用哪种”,本文不仅讲清楚原理,还带大家落地实操,彻底摆脱“理论派”!咖啡Java研习班多线程是Java开发的核心竞争力,而线程创建是基础中的基础。本文3个实操案例覆盖了集合、IO、异常处理等知识点,代码可直接复制到IDE运行,建议大家动手敲一遍,感受不同方式的差异。

weixin_42779075的博客 762

【面试专栏|Java并发编程】拆解Java线程生命周期:从新建到终止,再讲清进程与线程的核心差异

摘要:本文深入解析进程与线程的核心区别及Java线程生命周期。进程是资源分配的基本单位,线程是CPU调度的基本单位,两者在资源分配、独立性、切换开销等方面存在显著差异。Java线程生命周期包含6个状态:NEW(新建)、RUNNABLE(就绪)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(超时等待)和TERMINATED(终止),每个状态的切换条件和应用场景不同。文章结合实例和面试高频问题,帮助读者掌握底层逻辑,提升面试表现和实战能力。

m0_58782205的博客 478

2026年Java线程面试核心考点与实战解析

Java线程作为并发编程的核心概念,其底层原理基于操作系统线程模型,通过JVM实现跨平台调度。现代Java技术栈中,虚拟线程(Virtual Thread)通过轻量级用户态线程显著提升并发性能,而CompletableFuture等工具则简化了异步编程复杂度。在分布式系统和高并发场景下,精准控制线程生命周期、合理配置线程池参数成为工程实践的关键能力。本文深入剖析线程状态转换、JUC工具包实战技巧,以及如何通过JFR、JStack等工具进行线程问题诊断,帮助开发者应对2026年技术面试中的高难度并发问题。

weixin_30977485的博客 255

Java多线程面试核心考点与实战解析

多线程编程是Java并发体系的核心技术,其核心在于解决共享资源访问的线程安全问题。从JMM内存模型到happens-before规则,从synchronized锁优化到CAS无锁编程,现代并发编程通过内存屏障、锁升级等机制保证可见性与有序性。在工程实践中,线程池参数调优、ConcurrentHashMap分段策略、CompletableFuture异步编排等技术大幅提升了系统吞吐量。针对高频面试场景,需要重点掌握线程生命周期、volatile原理、ThreadLocal内存泄漏等12个核心维度,并能够手写生

weixin_34184158的博客 373

【面试必看: Java 多线程深度解析:从基础原理到实战应用(附面试高频考点)】

本文系统梳理了Java多线程的核心知识体系,从线程基础概念到实战应用场景。主要内容包括:1)线程与进程的本质区别,包括内存空间、资源占用等关键维度;2)并发与并行的核心差异,结合CPU架构分析执行机制;3)四种线程创建方式对比及适用场景;4)线程生命周期六种状态及转换关系。文章特别强调面试高频考点,如Runnable与Callable的区别、线程状态转换条件等,并提供了典型代码示例。通过多维度对比表格和实际案例,帮助开发者构建完整的多线程知识框架,为应对技术面试和实际开发提供指导。

xxxxxxllllllshi的博客 1668
上一篇: net.dean.jraw.http.NetworkException报错的解决方法,亲测有效,嘿嘿嘿
下一篇: SerializationException报错的解决方法,亲测有效,嘿嘿嘿
代码无疆
博客等级 码龄3年 4万+粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值