<label id="oakn9"><ruby id="oakn9"><input id="oakn9"></input></ruby></label>

<button id="oakn9"><acronym id="oakn9"><input id="oakn9"></input></acronym></button>

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

標簽: none

[站長推薦]-[系統化學習]


[網站公告]-[抵制某公眾號與某知識星球]


添加新評論

久久99国产只有精品