首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Java中创建线程会成为瓶颈吗?

在Java中创建线程会成为瓶颈吗?
EN

Stack Overflow用户
提问于 2011-12-11 16:03:53
回答 3查看 562关注 0票数 2

对于连续的任务,例如渲染动画,每一帧创建短暂的线程会比在开始时创建线程然后暂停和恢复慢得多吗?

或者差异可以忽略不计?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-11 16:06:31

这会慢很多;线程有很大的开销。

您可以使用线程池来重用线程并避免开销。

然而,对于这种短暂的任务,使用线程可能仍然是不值得的,因为上下文切换的成本将超过收益。

测量它!

票数 9
EN

Stack Overflow用户

发布于 2011-12-11 16:07:27

创建一个新线程会有很大的开销。如果线程的活动非常短,则创建开销甚至可能大于实际执行时间。您将需要尽可能多地回收线程。

我推荐使用ExecutorService

票数 2
EN

Stack Overflow用户

发布于 2011-12-11 16:21:07

由于创建开销,创建新线程不是最好的方法。您至少应该使用线程池,而不是创建新线程(有关详细信息,请参阅Executor )。

此外,线程的生命周期也很重要。如果它太短,性能可能会更差,因为上下文切换开销。

另一个要点是您拥有的CPU/核心的数量。一般来说,如果你的任务是CPU密集型的,你应该在每个核心上使用1-2个线程(我假设这是你的情况)。如果你的任务是I/O密集型的,你可以稍微增加这个数字(比如说3-5个theads)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8465358

复制
相关文章
创建Java中的线程池
线程是Java的一大特性,它可以是给定的指令序列、给定的方法中定义的变量或者一些共享数据(类一级的变量)。在Java中每个线程有自己的堆栈和程序 计数器(PC),其中堆栈是用来跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前线程正在执行的指令。
全栈程序员站长
2021/05/08
9160
在Servlet的init方法中创建线程
 servlet代码如下: package com.weichat.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.se
庞小明
2018/03/07
2.8K0
Java 会走向晦暗吗? Kotlin 会取而代之吗
Stackoverflows上的趋势图显示Java从2015年以后走下坡路,而Kotlin开始上升。该图形中的Java趋势不断下降,Java很容易失去其作为一种非常流行的编程语言的地位。
良月柒
2019/11/07
9860
Java 会走向晦暗吗? Kotlin 会取而代之吗
java创建线程池的几种方式_Java中的线程池
它们分别是AbortPolicy,CallerRunsPolicy,DiscardOldestPolicy和DiscardPolicy
全栈程序员站长
2022/11/10
6260
通过 Java 线程堆栈进行性能瓶颈分析
改善性能意味着用更少的资源做更多的事情。为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算,而是让 CPU 做有用的事情而忙)。如果程序受限于当前的 CPU 计算能力,那么我们通过增加更多的处理器或者通过集群就能提高总的性能。总的来说,性能提高,需要且仅需要解决当前的受限资源,当前受限资源可能是: CPU: 如果当前 CPU 已经能够接近 100% 的利用率,并且代码业务逻辑无法再简化,那么说明该系统
Java架构
2018/06/14
1.2K0
通过Java 线程堆栈进行性能瓶颈分析
改善性能意味着用更少的资源做更多的事情。为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算,而是让 CPU 做有用的事情而忙)。如果程序受限于当前的 CPU 计算能力,那么我们通过增加更多的处理器或者通过集群就能提高总的性能。总的来说,性能提高,需要且仅需要解决当前的受限资源,当前受限资源可能是: CPU: 如果当前 CPU 已经能够接近 100% 的利用率,并且代码业务逻辑无法再简化,那么说明该系统
技术zhai
2018/04/25
1.2K0
通过Java 线程堆栈进行性能瓶颈分析
java中创建线程的4种方式
java线程创建方式有几种?这种问题在面试中经常被问到,你可能心里马上反映出两种方式(实现Runnable、继承Thread),当你把这两种叙述给面试官听后,面试官会觉得你该掌握的知识已经有了,但是仅仅而已。如果你还说了callable与future、线程池,那么面试官就会认为你 知识覆盖面广,对你好感加一!下面首先叙述为什么会出现线程,以及线程在实际生活中的例子,紧接着给出四种创建线程的方式,加以代码进行演示。喜欢博主文章的你,动动你们的小爪子,点赞收藏呗(#^.^#)
用户7886150
2021/04/21
3600
Java中创建多少线程才是合适的?
大家都知道多线程可以提高程序整体执行效率,但是为什么多线程可以执行效率呢?线程是越多越好吗?如何估算线程数以使程序执行吞吐量达到最优呢?
程序员小强
2019/08/09
3.2K0
创建Java守护线程
Java运行时利用特殊类型的线程来执行后台任务,这称为守护程序线程。这些支持线程管理诸如垃圾收集之类的后后任务。守护程序线程是特殊的,因为如果JVM中运行的唯一线程是守护程序线程,则Java运行时将关闭或退出。
FunTester
2020/05/26
1.8K0
Java线程创建过程中的各种细节
哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。
子牙老师
2022/05/16
7780
Java线程创建过程中的各种细节
你真的了解Java中的线程池吗
Java中的线程池,相信大家都接触过或者使用过,它里面到底是怎么运作的,不知道大家有没有去实际了解过?这篇文章将带领大家去看看它内部结构和实现原理。
tunsuy
2022/10/27
2730
在人工智能的浪潮中,我们会失业吗?
原作者 Hope Reese 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 担心机器人会比你更胜任你的工作吗?人工智能专家预测这种情况很可能发生——而且来的比你想象的要早。 随着人工智能和自动化以闪电般的速度发展着,许多人都担心这将对我们的工作造成怎样的影响。 麻省理工学院数字经济 (IDE) 项目负责人 Erik Brynjolfsson ,以及麻省理工学院的首席研究科学家、IDE 项目联合负责人 Andrew McAfee 表示,我们已经进入了“第二个机器时代”, 即如今
CDA数据分析师
2018/02/26
1.2K0
在人工智能的浪潮中,我们会失业吗?
java如何创建线程池_java线程池状态
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net
全栈程序员站长
2022/11/10
1.1K0
java如何创建线程池_java线程池状态
ArrayList在Java多线程中的应用
开发中,存在这样的业务逻辑,类似倒金字塔结构,下层数据需要基于上层的数据进行逻辑计算。设计思路是:定义一个全局变量upLayerList,来保存上一层的数据。每一层计算仅需要知道upLayerList就可以,不用关心上一层数据怎么获取。当前层计算完毕后,把结果赋值给upLayerList,留给下一层使用。
用户2146693
2019/08/08
1.5K0
ArrayList在Java多线程中的应用
你真得知道Java 中有几种创建线程的方式吗?
可能很多人会讲可以先创建 Runnable 当做参数传给 Thread ,可以写匿名内部类,可以编写 Thread 的子类,可以通过线程池等等。
明明如月学长
2021/08/31
6610
java创建线程池代码_java手写线程池
当队列和线程池都满了,说明线程池处于饱和的状态,那么必须采取一种策略处理提交的新任务。这个策略默认是AbortPolicy,表示无法处理新任务时抛出异常
全栈程序员站长
2022/11/14
7830
你知道线程池创建多少线程比较合理吗?
点击上方蓝色“程序猿DD”,选择“设为星标” 回复“资源”获取独家整理的学习资料! 作者 | 小鱼儿_karl 来源 | https://www.cnblogs.com/karlMa/p/11356041.html 在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。 为什么会使用多线程 使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指,降低延迟 指发送请求到接收到数据的时间,和 提搞吞吐量
程序猿DD
2023/04/04
4300
你知道线程池创建多少线程比较合理吗?
Java多线程编程在JMeter中应用
在最近的工作中,遇到一个需求:在JMeter中生成一个全局唯一变量,获取一次自增x(这个不确定,可能根据响应信息)。这不是我的需求,只是从同事那边听说到的,周末没事儿想起来这个事儿。按照我的方案肯定是用Java或者Groovy去实现这个需求,肯定不会选JMeter。
FunTester
2020/07/21
9850
java创建线程池参数_java创建线程的四种方式
一、工作中使用线程池的好处: 1.降低资源消耗,线程的创建和消耗是非常消耗资源的,使用线程池可以避免线程的频繁创建和消耗,从而降低资源消耗。 2.提高响应速度,当请求到达时,线程池可以为请求直接分配一个线程,因此就不用等待线程创建就可以立即执行。 3.线程池可以很好的管理线程。
全栈程序员站长
2022/11/10
4330
你知道线程池创建多少线程比较合理吗?
来源 | https://www.cnblogs.com/karlMa/p/11356041.html
用户2242639
2021/06/29
6200

相似问题

在多线程环境中,对象创建是Java的瓶颈吗?

33

Java缓冲区大小会成为瓶颈吗?

22

JAVA Timer会创建新线程吗?

10

Rails应用程序会慢到成为瓶颈,而不是数据库吗?

50

为什么锁会成为多线程程序的瓶颈?

60
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文