| 失效链接处理 | 
| ThreadPoolExecutor线程池  PDF 下载 
	本站整理下载: 
	相关截图:  
	主要内容: 
		1. 线程池的优势 
		节省资源开销:重复利用线程池中的线程,不需要每次都创建 
		提升对线程的管理能力:统一对线程分配和监控,避免无限创建,造成资源内存溢出和CPU耗尽 
		提高响应,降低系统开销:减少了创建线程的时间消耗,提高应对任务的响应 
		线程空间大小 
		线程空间大小和具体JDK版本有很大关系,JDK8将近1.9M、JDK11差不多1.5M多。具体大小的查看可以执行 
		命令 java -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=summary -XX:+PrintNMTStatistics -version 。 
		C:\Users\WONGS> java -XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=summary -XX:+PrintNMTStatistics -version java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode) Native Memory Tracking: Total: reserved=7849030KB, committed=465994KB - Java Heap (reserved=6248448KB, committed=391168KB) (mmap: reserved=6248448KB, committed=391168KB) - Class (reserved=1056866KB, committed=4578KB) (classes #472) ( instance classes #407, array classes #65) (malloc=98KB #502) (mmap: reserved=1056768KB, committed=4480KB) ( Metadata: ) ( reserved=8192KB, committed=4096KB) ( used=3120KB) ( free=976KB) ( waste=0KB =0.00%) ( Class space:) ( reserved=1048576KB, committed=384KB) ( used=297KB) ( free=87KB) ( waste=0KB =0.00%) - Thread (reserved=16455KB, committed=591KB) (thread #16) (stack: reserved=16384KB, committed=520KB) (malloc=52KB #89) (arena=19KB #30) ...... 
		2. 几种常见线程池 newCachedThreadPool :数量无上限,该线程池会根据需要创建,但是优先使用之前构造的线程。这些池 
		通常将提高执行许多短期异步任务的程序的性能,如果没有可用的现有线程,则将创建一个新线程并将其 
		添加到池中。当60S内未使用的线程将被终止并从缓存中删除。 因此,保持空闲时间足够长的池不会消耗 
		任何资源。 
		构造函数 : 
		public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); } newFixedThreadPool :数量固定大小,该线程池重用在共享的无边界队列上运行的固定数量的线程。在任 
		何时候,最多nThreads(构造函数的参数, 核心线程数与最大线程数相等 )个线程都是活动的处理任务。 
		如果在所有线程都处于活动状态时提交了其他任务,则它们将在队列中等待,直到某个线程可用为止。 如 
		果在关闭之前执行过程中由于执行失败导致任何线程终止,则在执行后续任务时将使用新线程代替。 池中 
		的线程将一直存在,直到明确将其关闭。 
		构造函数 : public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); } newSingleThreadExecutor :单线程,保证提交线程执行任务的FIFO, (但是请注意,如果该单个线程由 
		于在关闭前执行期间由于执行失败而终止,则在需要执行新任务时将使用新线程代替。),在任何给定时 
		间活动的任务不超过一个。与newFixedThreadPool不同,保证返回的执行程序不可重新配置为使用其他 
		线程。 
		构造函数 : public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>())); } newScheduledThreadPool :该线程池可以安排命令在给定的延迟后运行或定期执行。 
		构造函数 : public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) { | 



 
     苏公网安备 32061202001004号
苏公网安备 32061202001004号


 
    