考虑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/