java中的线程池,如何创建?

Java中的线程池

  • 它是线程的容器,或者(换句话说,它是具有执行任务能力的线程的集合)。

  • 我们可以使用ThreadPool框架来定位(或实现)线程池。

  • 线程池可以包含多个线程。每当我们执行任何任务时,线程就会从线程池中出来并完成该任务,然后再次返回线程池。

如果您不使用线程池,那么...

您需要一次又一次地创建重复的线程,并且每次都会浪费内存并破坏对象,从而降低性能。如果请求数量增加/减少,那么我们需要创建更多数量的线程。

如果您使用线程池,那么...

您不需要一次又一次地创建重复的线程,也不会浪费内存,也不必每次都销毁对象,因此性能将得到提高。

如果请求数量增加/减少,那么我们不需要创建更多线程。

示例

ThreadPool包含100个线程,请求数为200,然后将有100个请求解决第一个100个请求,然后在完成任务线程后将释放它们并返回线程池,然后有100个线程将解决下一个100个请求。

在线程池中,我们可以讨论三件事:

  • 如何创建一个ThreadPool?

  • 如何向线程池中的线程提交任务?

  • 如何关闭线程池?

让我们看看如何创建线程池,

ExecutorService es = Executors.new FixedThreadPool(int);

int是线程池中的线程数

让我们看看如何使用来向线程池中的线程提交任务submit()

ExecutorServiceObject (es) => es.submit(Runnable obj);

让我们看看如何关闭threadPool?

ExecutorServiceObject (es) => es.shutdown();

示例

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class ThreadPoolClass implements Runnable{
	String s;
	
	ThreadPoolClass(String str){
		s = str;
	}

	public static void main(String[] args){
		ExecutorService es = Executors.newFixedThreadPool(1);
		es.submit(new ThreadPoolClass("First Name: Preeti"));
		es.submit(new ThreadPoolClass("Second Name: Jain"));
		es.shutdown();
	}

	public void run(){
		System.out.println(Thread.currentThread()+ s);
	}
}

输出结果

D:\Java Articles>java ThreadPoolClass
Thread[pool-1-thread-1,5,main]First Name: Preeti
Thread[pool-1-thread-1,5,main]Second Name: Jain