java - 创建 Thread 对象或实际启动线程是否昂贵?

标签 java multithreading

考虑this question .

创建线程成本高昂的原因有多种,特别是需要分配大量内存并且需要注册线程。

现在考虑这段代码:

Thread thread = new Thread(new SomeRunnable());
thread.start();

哪一部分是“昂贵”的部分?实际创建 Thread 对象的行还是启动线程的行?或两者?我之所以问这个问题,是因为我正在编写游戏的服务器组件,并且我正在讨论是否应该在玩家连接后立即创建 Thread 对象并在玩家完成登录后启动线程,还是应该两者都做玩家登录完成后创建并启动线程。

最佳答案

创建Thread对象非常便宜。您只需付出调用构造函数的代价。占用空间( native 调用、堆栈内存等)的是 start() 方法

另一方面,如果您创建大量线程,请考虑提前创建(并启动它们)并拥有一个池。这已经为您完成,请查看 Executors类。

关于java - 创建 Thread 对象或实际启动线程是否昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569457/

相关文章:

ios - 计时器被触发两次但未被取消

c# - Naudio录音麦克风X秒钟

java - 多线程矩阵乘法

java - 创建静态引用与单例

java - Alfresco 如何安装附加 jar 文件?例如。我必须在 :fme-datalist-extension-share. jar 上安装 add

java - 无法将管道分隔的 header 数据解析为正确的变量

java - 在Java中,如何将对象从工作线程传递回主线程?

java - 通过它的值在 Java 中初始化一个字节数组?

java - 如何注释 Hibernate 实体以同时支持 Java 和数据模型?

Java同步性能