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接口都可以新啟動一個線程,這兩種方法的區別是什么呢?感興趣的話,可以私下找我溝通。再請大家思考一下,為什么本文的題目為“入門介紹”?你能否感受到此文對你的重要意義嗎?