为什么说创建线程Thread的开销大?

为什么说创建线程Thread的开销大?

javathread
1
263
小课
小课2022-05-26 16:18
1 个回答

因为线程和普通Java对象不同,除了需要给Thread对象分配内存,进行初始化之外,还需要做以下工作。

  • Java中的线程与操作系统的线程是一一对应的,所以还需要在操作系统中创建一个线程与之对应。
  • 为当前线程的虚拟机栈分配和初始化大块内存,大约1M内存。

当线程结束时,回收已经分配的资源也会消耗资源。另外存活的线程作为GCRoots之一,它所关联的对象都不会被GC回收,这样也会持续占用一些资源。所以对于线程使用比较频繁的场景,我们应该优先考虑线程池。

1
已修改
小课
小课2022-05-26 16:58
你的回答

内容