java创新线程需要占用大量资源,需要JVM和操作系统配合完成大量工作。
1.必须为线程分配和初始化大量内存,其中包含至少1MB的栈内存。
2.需要进行系统调用,以便在OS中创建和注册本地线程。
Java高并发应用频繁创建和销毁线程的操作是非常低效的,而且是不被编程规范所允许的。
线程池可以降低java创建线程的成本,它主要解决了以下两个问题:
1.提升性能:
线程池能独立负责线程的创建、维护和分配。在执行大量异步任务时,可以不需要自己创建线程,而是将任务交给线程池去调度。
线程池尽可能使用空闲的线程去执行异步任务,最大限度地对已经创建的线程进行复用,使得性能明显提升。
2.线程管理:
每个java线程池会保持一些基本的额线程统计信息,例如完成任务数量、空闲时间等,以便对线程进行有效管理,事得任务可以高效的调度。