面试题:创建线程有几种方式

面试:史上最全多线程面试题 - (锁&内存模型&线程) 多线程经典面试题59问。 1.什么是活锁、饥饿、无锁、死锁? 死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现 了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等 对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A 同学抢了 B 同学的钢笔,B 同学... 阅读详情

网上有说3或者4种,他们说的4种或者3种是把什么线程池也放进去了,今天我们就来看下oracle官网的描述,

A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.

Every thread has a priority. Threads with higher priority are executed in preference to threads with lower priority. Each thread may or may not also be marked as a daemon. When code running in some thread creates a new Thread object, the new thread has its priority initially set equal to the priority of the creating thread, and is a daemon thread if and only if the creating thread is a daemon.

When a Java Virtual Machine starts up, there is usually a single non-daemon thread (which typically calls the method named main of some designated class). The Java Virtual Machine continues to execute threads until either of the following occurs:

  • The exit method of class Runtime has been called and the security manager has permitted the exit operation to take place.
  • All threads that are not daemon threads have died, either by returning from the call to the run method or by throwing an exception that propagates beyond the run method.

 

There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started. For example, a thread that computes primes larger than a stated value could be written as follows:

这是oracle官网对Thread类的描述:https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Thread.html

我看到的是jdk14 但是不会影响对我们今天面试题的答案

在上面英文描述最后的一段话中我们可以找到答案:

There are two ways to create a new thread of execution

就是创建线程有二种方式,一个是继承Thread,还有一种是实现Runnable接口,这是官网说明的,够有权威的吧

至于说什么3或者4种,比如说Callable或者线程池只是基于线程做了一些封装操作而已,底层实现还是线程,它的本质没有变,

二种创建线程方式的对比

肯定是推荐使用实现Runnable方式创建线程的,理由支持如下:

1:如果是继承Thread,因为Java只支持单继承,这就限制了继承其他类,也就限制了它的扩展

2:我们在平时开发中很少说单独去开启一个线程,大部分都是使用线程池去管理线程,那么线程池需要的是Runnable,

3:如果使用继承Thread类开启线程的话,每次都是去开启一个线程,这样内存消耗比较大,如果是使用Runnable结合线程池可以降低消耗

 

面试题:JDK1.8 创建线程池有哪几种方式? 线程池中有多个线程队列,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,就存在有的线程处于饥饿状态,当一个线程处于饥饿状态时,它就会去其它的线程队列中窃取任务。定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化,当线程发生错误结束时,线程池会补充一个新的线程。可缓存的线程池,如果线程池的容量超过了任务数,自动回收空闲线程,任务增加时可以自动添加新线程,线程池的容量不限制。单线程的线程池,线程异常结束,会创建一个新的线程,能确保任务按提交顺序执行。 阅读详情

相关推荐

2026年信创系统技术应用专业人才培养基地建设方案(高职、信创新专业、人才培养、专业代码:510221)

响应国家信创产业战略及教育部新增“信创系统技术应用”专业(代码510221)的部署,联合麒麟软件、华为鸿蒙等领军企业,建设高水平信创人才培养基地。方案基于国家政策导向(如2027年央企全面国产化替代目标)和行业人才缺口(2025年缺口超80万人),提出以“产教融合、创新驱动”为核心,构建集教学、实训、认证于一体的综合性培养体系。 建设内容涵盖五大方向: 专业规划:分三阶段(2025-2030年)推进专业申报、课程开发与区域辐射,最终建成区域性信创技术创新平台。 课程体系:围绕运维、云计算、数据库、适配

啊碧根果的博客 1596

面试官:线程池的7种创建方式,你都清楚吗?

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 7分钟。来自:blog.csdn.net/m0_48273471/article/details/124145012线程池的创建⽅法总共有 7 种,但总体来说可分为 2 类:通过ThreadPoolExecutor创建的线程池;通过Executors创建的线程池。线程池的创建⽅式总共包含以下 7 种(其中 6 种是通过...

良月柒 724

半导体硅制造工艺

抛光液和硅片的反应速度很快,只要稍一停留,立刻便会腐蚀,因此取片时,不能在表面上留下抛光液,必须紧接着水抛,直至抛光液被全部冲去,再将片子取下。由于晶圆制造过程有各种各样的晶圆固定器和自动设备,需要严格的直径控制以减少晶圆翘曲和破碎,而单晶硅棒的外径表面并不平整且直径也比最终抛光晶片所规定的直径规格大,因此需要通过外径滚磨获得较为精确的直径。胶体的颗粒直径比磨料的颗粒直径小一个数量级,且硬度与硅相当,因此它比用磨料的机械抛光表面损伤更小,抛光出的硅片表面具有高度的镜面光洁。不受材料导电类型和电阻率的影响。

pgpaojiao的博客 2240

经典面试题:java线程的创建方式

java线程的创建方式是一道经典的面试题,在Java中,创建线程主要有四种方式,每种方式各有特点,适合不同的使用场景。面试中,不仅要了解其创建方式,更要熟悉其应用场景。

weixin_47936134的博客 1224

AI人工智能与TensorFlow的教育科技应用

随着科技的飞速发展,AI人工智能在各个领域都展现出了巨大的潜力,教育领域也不例外。本文章的目的在于深入探讨AI人工智能与TensorFlow在教育科技中的具体应用,包括智能教学系统的开发、学生学习情况的评估与预测等方面。范围涵盖了从基础概念到实际项目应用的各个层面,旨在为教育科技工作者和相关研究者提供全面且深入的技术指导。本文将首先介绍AI人工智能和TensorFlow的核心概念及其联系,让读者对相关技术有基本的了解。接着详细讲解核心算法原理和具体操作步骤,并结合数学模型和公式进行深入分析。

AI智能探索者的博客 1693

NS-3 和Aqua-sim-ng 学习笔记(一)

因为要搞水下网络,OMNET++不太合适,就转Aqua-sim。这是基于NS-2上的模型,NS-2需要额外学一门tcl脚本语言。 正好查到它的一个升级版Aqua-sim-NG,在github上,https://github.com/rmartin5/aqua-sim-ng是基于NS-3的,只需要基本的C++,不用学tcl语言。美滋滋。 装好ubuntu之后,安装NS-3和Aqu...

diboshang8820的博客 2191

Java:多线程基础(一)-创建线程的两种方式

Java:多线程基础(一),线程与Thread类,以及创建多线程的三种方式。

席木木的博客 2370

用 SAP-ABAP-1 把 ABAP 代码理解这件事交给 AI:从遗留代码到 ABAP Cloud 的开发加速器

SAP-ABAP-1是SAP推出的首个专用ABAP基础模型,专注于理解和解释ABAP代码,帮助开发者更快迁移和维护遗留系统。它强调ABAP Cloud合规编码实践,通过SAP AI Foundation提供访问,主要能力包括代码解释、业务语义理解和框架约束分析。相比通用模型,它能更好处理ABAP特有的版本差异、权限控制和扩展边界等问题。该模型可集成到多种开发环境中,支持文件化开发体验,并能与SAP Joule等工具协同工作,为ABAP团队提供智能辅助。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3823

面试题:创建线程的几种方式

创建线程的5种方式 1.继承Thread类重写run方法 java代码: package com.example.demo.thread; /** * @Description 1.继承Thread类 * @author 大都督 * @date 2019年4月16日 */ public class ThreadA extends Thread{ @Override public ...

LiGuogang 1270

【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)

简介水文学法实现河道内生态流量计算

WW、forever的博客 5014

[毕设项目-大模型微调]现代文翻译文言文【基于LLaMA3.1-8B微调】

教你基于LLaMA3.1-8B微调如何做到现代文翻译文言文

逐梦苍穹的博客 2296

java基础学习笔记之九--线程(1)

Athreadis a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently --Java API ***线程 程序在主线程...

爱.NET 180

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

Java面试题:创建线程有几种方式

面试官: 小伙子,说下Java创建线程有几种方法? 我: 一般情况下就是继承Thread类和实现Runnable接口。这两者之间的区别就是实现Runnable接口,可以避免了继承Thread类的单继承局限性。 下面是我总结的一些创建线程的方式 import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateU...

你好,我们在哪里见过啊! 1713

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

面试题:Java创建线程有几种方式?其实这个没有那么简单。

​老生常谈的问题:你说一说 Java 创建线程都有哪些方式? Java 创建线程有两种方式: 继承Thread类,并重写run()方法 实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread 代码实现以下: ```java public static void main(String[] args) { // 第一种 MyTh...

qq_43530218的博客 371

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

面试题:创建线程有几种方式?

3..实现 Callable 接口并重写 call 方法,创建线程。可以获取线程执行结果的返回值,并且可以抛出异常。2.实现 Runnable 接口并重写 run 方法。避免了单继承局限性,编程更加灵活,实现解耦。4.使用线程池创建(使用 java.util.concurrent.Executor 接口)1.继承 Thread 类并重写 run 方法创建线程,缺点:实现简单但不可以继承其他类。

ughbnbjkk的博客 150

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java创建线程几种_面试题:Java创建线程有几种方式?其实这个没有那么简单。...

老生常谈的问题:你说一说 Java 创建线程都有哪些方式?Java 创建线程有两种方式:继承Thread类,并重写run()方法实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread代码实现以下:public static void main(String[] args) {// 第一种MyThread myThread = new MyThread(...

weixin_30710557的博客 222

解锁阿里巴巴面试题:创建线程的几种方式?

嗨,大家好!小米今天给大家分享阿里巴巴面试题:创建线程的几种方式。从继承Thread类到使用线程池,五种方式助你在编程航程中驾驭多线程,提升技术实力!快来一起探索吧!

孤芳不自赏 483

面试题库:Java线程创建有哪几种方式?到底该怎么回答?

文章从语言规范层面指出创建线程只有 new Thread() 一种方式,但从定义任务角度分为四种:继承 Thread、实现 Runnable、实现 Callable(带返回值)、线程池。重点对比了各方式的优劣和使用场景,特别强调生产环境必须用 ThreadPoolExecutor 手动创建线程池,避免 OOM 风险。

专注Java后端开发,分享SpringBoot微服务、高并发优化、生产环境踩坑实录,帮你少走弯路,让我们一起从CRUD进阶到架构师。 846

常见面试题:java有几种创建线程方式

1.1: 只有一种继承Thread 然后重写run方法,重写得run方法不是start方法,缺点单继承不能做其他东西 都是实现runable接口。1.2 实现runable接口,重写run方法,用时候用new thread()调用start方法。1.3实现callable,可以开启一个线程。1.4利用线程池创建线程。

weixin_50096252的博客 73

小米分享 | 解密面试题:网易面试如何回答“创建线程有哪几种方式?”

在技术面试中,常被问及“创建线程有哪几种方式”,主要有:继承Thread类、实现Runnable接口、使用Callable和Future,以及使用线程池。多线程具有提高程序响应速度、充分利用多核处理器、简化编程模型、提高资源利用率等优势。在实际应用中,根据需求选择合适的线程创建方式,以保证程序的稳定和可靠。

孤芳不自赏 157

创建线程的几种方式你都掌握了吗?

在 Java 中,实现多线程的方式有多种,常见的有继承Thread类、实现Runnable接口、实现Callable接口并结合FutureTask使用,或使用线程池。面试官通过此类问题,考察候选人对 Java 并发基础的掌握、对多线程执行流程的理解以及实际项目中对线程管理的能力。本节不仅是知识点的回顾,更强调实战中的应用及面试答题技巧。Java 创建线程不仅是语言层面的技能,更是设计与性能考量的重要一环。不要只停留在 API 的使用层面,要能说清楚“为什么这么用”。强烈建议日常项目中多用线程池(如。

残影的博客 922

Java常见面试题—实现多线程的三种方式

多线程优势: 进程之间不能共享内存,但线程之间共享内存非常容易; 系统创建线程所分配的资源相对创建进程而言,代价非常小。 第一种实现方法—继承Thread类继承Thread类,重写run()方法,加入线程所要执行的代即可。 实例:public class ThreadTest { public static void main(String[] args) {

wmingstar 1661

关于创建线程的方式有几种

There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started. For example, a thread

寒山道杳 1556

面试官问我:创建线程有几种方式?我笑了

前言 多线程在面试中基本上已经是必问项了,面试官通常会从简单的问题开始发问,然后再一步一步的挖掘你的知识面。 比如,从线程是什么开始,线程和进程的区别,创建线程有几种方式,线程有几种状态,等等。 接下来自然就会引出线程池,Lock,Synchronized,JUC的各种并发包。然后就会引出 AQS、CAS、JMM、JVM等偏底层原理,一环扣一环。 这一节我们不聊其他的,只说创建线程有几种方式。 是不是感觉非常简单,不就是那个啥啥那几种么。 其实不然,只有我们给面试官解释清楚了,并加上我们自己的理解,才能在面

烟雨星空的博客 1798

线程创建的5种方式(面试)

Callable是一个“锦上添花”的东西,它能干的事情,使用Runnable也能干。Runnable关注的是这个过程,不关注执行结果。Runnable提供的run方法,Callable要关注执行结果,Callable提供的call方法,的任务,使用Callable会更好一些。代码更直观,更简单。这里不作过多解释,只因为博主也没有深入了解,所以不敢瞎说。上面演示快速上手一个线程就属于继承Thread类。因为所有的方式的本质都是。

t1750982356的博客 3017
上一篇: 剑指offer: 输入n,求斐波那契数列的第n项值
下一篇: jvm的分类
zhoushenxian
博客等级 码龄12年 453粉丝 549原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值