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接口都可以新启动一个线程,这两种方法的区别是什么呢?感兴趣的话,可以私下找我沟通。再请大家思考一下,为什么本文的题目为“入门介绍”?你能否感受到此文对你的重要意义吗?

4、参考:

https://www.javatpoint.com/java-thread-pool