当前位置: 首页 > news >正文

Java Core 50 个顶级求职面试问题与答案。第二部分

多线程

24. 如何在 Java 中创建新线程?

无论如何,线程会被创建,使用线程类。但有多种方法可以做到这一点......

  1. 继承java.lang.线程.
  2. 实现java.lang.Runnable接口——线索类的构造子会接受一个可运行对象。

让我们来谈谈他们每一个。

继承Thread类

在这种情况下,我们让类继承java.lang.线程.它有一个run()这正是我们所需要的。新线程的所有生命力和逻辑都将集中在这个方法中。这有点像主要角色新线索的方法。 之后,剩下的就是创建我们类中的对象并调用开始()方法。这样会创建一个新线程并开始执行其逻辑。让我们来看看:主机输出大致如下:

/** * An example of how to create threads by inheriting the {@link Thread} class. */ class ThreadInheritance extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { ThreadInheritance threadInheritance1 = new ThreadInheritance(); ThreadInheritance threadInheritance2 = new ThreadInheritance(); ThreadInheritance threadInheritance3 = new ThreadInheritance(); threadInheritance1.start(); threadInheritance2.start(); threadInheritance3.start(); } }
线索1 线程-0 线索-2

也就是说,即使在这里,线程的执行也不是按顺序执行,而是按照JVM的判断执行:)

实现可运行接口

如果你反对继承和/或已经继承了其他职业,你可以使用java.lang.Runnable接口。 在这里,我们让类通过实现run()方法,就像上面的例子一样。剩下的就是创造线索物品。看起来代码行数越多越糟。但我们知道遗传有多么有害,最好尽量避免;) 看看:结果如下:

/** * An example of how to create threads from the {@link Runnable} interface. * It's easier than easy — we implement this interface and then pass an instance of our object * to the constructor. */ class ThreadInheritance implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { ThreadInheritance runnable1 = new ThreadInheritance(); ThreadInheritance runnable2 = new ThreadInheritance(); ThreadInheritance runnable3 = new ThreadInheritance(); Thread threadRunnable1 = new Thread(runnable1); Thread threadRunnable2 = new Thread(runnable2); Thread threadRunnable3 = new Thread(runnable3); threadRunnable1.start(); threadRunnable2.start(); threadRunnable3.start(); } }
线程-0 线索1 线索-2

25. 进程和线程有什么区别?

进程和线程在以下方面有所不同:

  1. 运行中的程序称为进程,但线程是进程的一部分。
  2. 进程是独立的,但线程是进程的一部分。
  3. 进程在内存中有不同的地址空间,但线程共享一个共同的地址空间。
  4. 线程间的上下文切换比进程间切换更快。
  5. 进程间通信比线程间通信更慢且成本更高。
  6. 父进程的任何更改不会影响子进程,但父进程的变化可能影响子进程。

26. 多线程有哪些好处?

  1. 多线程允许应用程序/程序始终响应输入,即使它已经在运行一些后台任务;
  2. 多线程使得任务完成速度更快,因为线程独立运行;
  3. 多线程能更好地利用缓存内存,因为线程可以访问共享的内存资源;
  4. 多线程减少了所需的服务器数量,因为一台服务器可以同时运行多个线程。

27. 线程生命周期中的状态是什么?

http://www.zskr.cn/news/1382762.html

相关文章:

  • Topit:如何在Mac上实现一键窗口置顶,让多任务处理效率翻倍?
  • 机器学习势函数进阶:Hessian矩阵训练如何提升分子模拟精度与数据效率
  • 基于ATMega8的可编程定时器设计与实现:从精准时基到循环控制
  • 零基础怎么学Agent?这个工程师考试内容拆给你看
  • 天文时序数据分析:机器学习评估、半监督学习与无监督方法实战
  • 别再只盯着多边形了!用Unity 2022 LTS手把手教你实现一个简单的体素化渲染器(附完整项目)
  • 基于Cynthion逆向USB协议,为DP100电源开发Linux控制软件
  • LLM赋能小样本材料科学:数据插补、语义编码与SVM泛化实战
  • 影刀RPA跨境店群自动化:从Chromium底层调度到分布式容器化运营的架构演进
  • 2026年家居定制市场解析:全屋定制性价比的多维度观察 - 产品测评官
  • Firefox 与 Adafruit 合作:无需安装程序,在浏览器中轻松实现硬件编程!
  • 量子自编码器与Qudit VQC:混合量子-经典机器学习处理大规模时序数据
  • Frida实战指南:Java/So层Hook、RPC与群控的工程化落地
  • DDR专题-CK 时钟、MT/s 与带宽的关系
  • 企业内网应用通过 Taotoken 安全调用大模型 API 的实践方案
  • PDF4QT:免费开源的全能PDF工具箱,轻松解决你的文档处理难题
  • 游戏开发中的‘魔法’:用复数(或四元数)轻松搞定角色朝向与平滑旋转
  • AI模型训练能耗激增背后的回弹效应与绿色计算挑战
  • AI原生求职时代来了|2026校招报告:95%应届生用AI求职,企业面临三大挑战 - 嘻哩哩女王在行动
  • Burp Suite拦截机制深度解析:从HTTP/HTTPS协议层到请求重放一致性
  • Nodejs后端服务集成Taotoken实现多模型智能对话功能
  • 2026年Burp Suite安装避坑指南:JDK 21与CA证书三级验证
  • FairyGUI Unity鼠标悬停点击事件原理与实战
  • OpenIPC开源固件:5步解锁网络摄像头的终极控制权
  • Unity 2D血液喷溅效果实现原理与TileMap坐标校准
  • 工业级PLC跨界智能家居:Arduino Opta Pro实现高可靠能源监控
  • 基于Arduino与AD9850的DWD气象信号模拟器设计与实现
  • LimeSoDa数据集:机器学习回归模型在数字土壤制图领域的基准测试平台
  • 车辆互联空气悬架系统协同控制方法【附程序】
  • 嵌入式GUI开发:RL-FlashFS与emWin实现BMP图像显示