Java 线程池入门介绍
Java线程池表示一组等待作业并多次重用的工作线程。在线程池的情况下,将创建一组固定大小的线程。我们可以从线程池中取出一个线程并分配一个作业。作业完成后,线程将会归还到线程池中。
1、Java 线程池入门
学习线程池技术,先从最简单的两个线程池方法入手,如下所示,从而开门见山,领略线程池的魅力。
- newFixedThreadPool(ints):该方法创建一个固定大小的线程池。
- newSingleThreadExecutor():该方法创建一个新线程。
2、Java 线程池应用介绍
2.1、编写任务类
class Task implements Runnable
{
private String message;
public Task(String s)
{
this.message = s;
}
public void run()
{
System.out.println(Thread.currentThread().getName() + " Start:message = " + message);
processmessage();
System.out.println(Thread.currentThread().getName() + " End!");
}
private void processmessage()
{
try
{
Thread.sleep(2000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
2.2、将任务扔到线程池中进行执行
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolDemo
{
public static void main(String[] args)
{
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++)
{
Task task = new Task("" + i);
executor.execute(task);
}
executor.shutdown();
while (!executor.isTerminated())
{
}
System.out.println("Finished all threads");
}
}
3、思考题
请大家思考一下:继承Thread和实现Runnable接口都可以新启动一个线程,这两种方法的区别是什么呢?感兴趣的话,可以私下找我沟通。再请大家思考一下,为什么本文的题目为“入门介绍”?你能否感受到此文对你的重要意义吗?