Java newfixedthreadpool示例

时间:2020-02-23 14:35:05  来源:igfitidea点击:

在本教程中,我们将了解executor的newfixedthreadpool工厂方法。
在最后一个教程中,我已经分享了ThreadPoolExecutor的介绍。

如果你不知道的概念 ThreadPoolExecutor,你应该先经过这一点。

executor的newfixedthreadpool工厂方法:

此方法返回 ThreadPoolExecutor其最大大小(假设n个线程)是固定的。
如果所有n个线程正忙于执行任务,并且提交了其他任务,那么它们必须在队列中,直到线程可用。

语法:

ExecutorService executorService=Executors.newFixedThreadPool(noOfThreads);

Java newfixedthreadpool示例:

让我们创建一个非常简单的例子。

步骤1:创建名为"looptask.java"的可追踪任务。

package org.igi.theitroad;
 
public class LoopTask implements Runnable {
 
	private String loopTaskName;
	
	public LoopTask(String loopTaskName) {
		super();
		this.loopTaskName = loopTaskName;
	}
 
	@Override
	public void run() {
		System.out.println("Starting "+loopTaskName);
		for (int i = 1; i <= 10; i++) {
			System.out.println("Executing "+loopTaskName+" with "+Thread.currentThread().getName()+"===="+i);
		}
		System.out.println("Ending "+loopTaskName);
	}
}

第2步:创建一个名为的类 FixedThreadPoolMain.java
这将是我们的主班。

package org.igi.theitroad;
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class FixedThreadPoolMain {
 
	public static void main(String args[])
	{
		ExecutorService es=Executors.newFixedThreadPool(3);
		
		for (int i = 1; i <= 6; i++) {
			LoopTask loopTask=new LoopTask("LoopTask "+i);
			es.submit(loopTask);
		}
		es.shutdown();
	}
}

我们使用了新的 newFixedThreadPool,所以在我们提交的时候 6 tasks3 new threads将被创建并将执行 3 tasksOther 3 tasks将等待等待 queue
一旦通过线程完成任何任务,将通过此线程挑选另一个任务,并将执行它。