每个 Java 开发人员都应该知道的线程知识

发表于:2022-4-28 10:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:新钛云服

  多线程是Java 中最复杂和最强大的部分
  多线程章节是 Java 中最难理解和使用的章节。不幸的是,没有多少资源可以让您获得所有答案。同时,并发知识至关重要。在本文中,我解释了每个 Java 开发人员都必须了解的多线程的核心方面。在这一部分中,我们从 Thread 和 Runnable 主题开始。
  为什么并发知识如此重要?
  如果没有良好的多线程知识,您将无法获得高级 Java 工作
  几乎可以肯定,多线程知识是 Java 高级职位面试的主题。如果没有对多线程的清晰理解,无论是否有实践经验,你很可能会失败。
  几乎每个生产应用程序都使用多线程范式
  在实际项目的实践中,您将使用应用程序服务器或其替代品。它们都基于线程池等多线程解决方案。任何在其之上的适当实现都需要并发一致性。
  线程和可运行定义
  多线程基于 Thread 和 Runnable。Thread 是一个启动新的独立活动并执行 Runnable 提供的指令的类。
  线程是一个附加到操作系统的实体,所以这就是它是一个重类的原因。同时 Runnable 只是一组指令——所以这就是为什么它是轻量级的。
  如何执行新线程
  线程可以通过使用Run()方法在当前运行的线程内部执行指令。为了在新活动中运行指令,Thread 提供了Start()方法。
  如何重用线程
  线程可以在其中执行许多可运行的任务。这是一篇更详细的文章。在这里,您可以看到一个非常简短的示例,其中许多可运行对象(任务)在一个线程中运行:
  如何停止线程
  你不能只是stop()或suspend()线程。这些方法已弃用。您必须注意使用isAlive()或的中断设计isInterrupted()
  线程守护进程
  线程可以是守护进程。即使最后一部分不会执行,守护线程也会立即中断。所以这样的线程可以附加到资源上。否则,它们可能是资源或/和内存泄漏的原因。
  如何使用线程池
  只要 Thread 实例很重,使用 ThreadPool 类重用相同的 Thread 是有意义的。您可以根据线程使用不同的 ThreadPool 实现。
  固定线程池
  FixedThreadPool 是一个具有预定义线程数的简单池。期间线程数不会改变。使用它是有意义的:
  缓存线程池
  与Fixed Thread Pool相反,这个可以在添加更多任务时动态增加线程数。每个新创建的线程在使用时都将处于活动状态,否则将在空闲 60 秒后将其删除。
  如何定义线程池中的线程数
  为了为您的应用程序使用最好的线程池,您需要了解以下内容:
  ·如果您的线程执行大量计算,例如视频渲染、加密等,那么它会吃掉运行该线程的进程。
  · 如果您的线程运行与 CPU 活动(如网络调用、内存调用等)无关,则它不会消耗运行其线程的 CPU。
  依靠这些知识,您可能会得出以下结论:
  拥有高 CPU 消耗任务的任务分配的线程数不会超过 CPU 内核数。
  对于 CPU 消耗较低的任务,您可以拥有比 CPU 内核更多的线程(但比例取决于具体情况)。
  结论:
  本文仅重点介绍有关线程、可运行和线程池概念的主要内容,但并未完全涵盖。仍有许多方面可能发挥重要作用。我希望你喜欢我使用的信息图表。如果您认为我遗漏了与此主题相关的重要内容,请留下您的反馈。谢谢阅读!

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号