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