本文主要介绍Java中的线程池:FixedThreadPool、CachedThreadPool、ScheduledThreadPool。
线程池是一种线程使用模式,它可以用来减少创建线程和销毁线程的次数,提高应用程序的性能。线程池维护着一个线程队列,线程池中的线程可以反复使用,处理完一个任务后,并不会立即销毁线程,而是将其放回线程队列中,等待下一次任务的到来。
Java中提供了三种线程池:FixedThreadPool、CachedThreadPool、ScheduledThreadPool。
FixedThreadPool是一种固定大小的线程池,它创建的线程数是固定的,当线程池中的线程数达到指定大小后,新的任务将等待之前的任务执行完毕后再执行。
使用方式:
ExecutorService executorService = Executors.newFixedThreadPool(5);
CachedThreadPool是一种可缓存的线程池,线程池中的线程数不固定,当有新的任务到来时,如果线程池中有空闲的线程,则立即使用该线程执行任务,否则创建一个新的线程处理任务。当线程池中的线程空闲时间超过60秒时,该线程将被销毁。
使用方式:
ExecutorService executorService = Executors.newCachedThreadPool();
ScheduledThreadPool是一种定时执行任务的线程池,它可以定时执行任务,也可以按照固定的时间间隔执行任务。ScheduledThreadPool创建固定大小的线程池,当任务数超过线程池大小时,会等待线程池中的任务执行完毕后再执行。
使用方式:
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
以下是使用FixedThreadPool的代码案例:
ExecutorService executorService = Executors.newFixedThreadPool(5); for (int i = 0; i < 10; i++) { executorService.execute(() -> { System.out.println("Thread-" + Thread.currentThread().getName() + " is running."); }); } executorService.shutdown();
以下是使用CachedThreadPool的代码案例:
ExecutorService executorService = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { executorService.execute(() -> { System.out.println("Thread-" + Thread.currentThread().getName() + " is running."); }); } executorService.shutdown();
以下是使用ScheduledThreadPool的代码案例:
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5); scheduledExecutorService.schedule(() -> { System.out.println("Thread-" + Thread.currentThread().getName() + " is running."); }, 5, TimeUnit.SECONDS); scheduledExecutorService.shutdown();
通过本文的学习,相信读者已经对Java中的线程池有了更深入的了解,可以更好地应用线程池来提高应用程序的性能。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com