java创建线程池的方式有几种 Java线程池?
Java线程池?
多线程就是合理分配计算机资源,创建不同的线程来处理不同的任务。然而,对于计算机来说,创建一个线程或销毁一个线程是很昂贵的。有时候有很多事情需要同时处理,所以我们需要频繁地创建和销毁线程,这需要花费很多时间。要解决这个问题,可以参考线程池的概念。
所谓线程池,就是集中管理线程。需要线程时,可以从线程池中获取空闲线程,这样可以减少频繁的创建和销毁线程,节省大量时间,减少很多不必要的操作。
java中提供了ThreadPoolExecutor类来管理线程。此类从AbstractExecutorService继承,后者实现ExecutorService接口。我们可以使用ThreadPoolExecutor来创建线程池。
什么是线程池,如何使用,为什么要用?
首先,线程池的作用:
线程池的作用是限制系统中执行线程的数量。
根据系统的环境,可以自动或手动设置线程数量,以达到最佳运行效果;少了浪费系统资源,多了造成系统拥塞,效率低下。使用线程池控制线程数量,其他线程排队等待。在一个任务被执行后,从队列中取出前面的任务并开始执行。如果队列中没有正在等待的进程,那么线程池的这个资源正在等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行;否则,进入等待队列。
二、如何使用:
配置一个线程池比较复杂,尤其是如果不清楚线程池的原理,很有可能配置的线程池不是最优的,所以在Executors类中提供了一些静态工厂来生成一些常用的线程池。
创建单线程线程池。这个线程池中只有一个线程在工作,相当于单个线程串行执行所有任务。如果这个唯一的线程由于异常而结束,一个新的线程将取代它。这个线程池确保所有任务按照提交的顺序执行。
创建一个固定大小的线程池。每次提交任务时创建一个线程,直到线程达到线程池的最大大小。一旦线程池的大小达到最大值,它将保持不变。如果一个线程由于执行异常而结束,线程池将被一个新线程补充。
?
1.创建和销毁线程的数量减少了,每个工作线程可以重用来执行多个任务。2.根据系统 s的承载能力,可以调整线程池中工作线程的数量,防止服务器因内存消耗过大而耗尽(每个线程需要1MB左右的内存,打开的线程越多,消耗的内存越多,最后崩溃)。
Java中线程池的顶层接口是Executor,但严格来说Executor并不是线程池,只是一个执行线程的工具。真正的线程池接口是ExecutorService。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。