Tìm hiểu Thread và Thread pool trong Java phần 3

2 min read

Trong lập trình đa luồng (multithreading) trong Java, Thread Thread Pool là hai khái niệm quan trọng giúp quản lý và tối ưu hóa việc thực thi các tác vụ. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng Thread và Thread Pool thông qua các ví dụ minh họa.

Thread trong Java

Thread trong Java là một luồng thực thi độc lập trong chương trình. Để tạo một Thread, bạn có thể mở rộng lớp Thread và ghi đè phương thức run() để xác định hành động của Thread.

public class MyThread extends Thread {
    private String threadName;

    public MyThread(String name) {
        this.threadName = name;
    }

    public void run() {
        System.out.println("Thread " + threadName + " is running.");
        try {
            Thread.sleep(2000); // Giả lập một tác vụ mất thời gian
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Thread " + threadName + " is completed.");
    }

    public static void main(String[] args) {
        MyThread thread1 = new MyThread("Thread 1");
        MyThread thread2 = new MyThread("Thread 2");

        thread1.start();
        thread2.start();
    }
}

Trong ví dụ trên, chúng ta tạo hai đối tượng Thread và bắt đầu chúng bằng cách gọi phương thức start().

Thread Pool trong Java

Thread Pool là một tập hợp các luồng đã được tạo sẵn để thực hiện các tác vụ. Trong Java, chúng ta có thể sử dụng ExecutorService và các lớp cung cấp bởi gói java.util.concurrent để tạo và quản lý Thread Pool.

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadPoolExample {
    public static void main(String[] args) {
        // Tạo thread pool với kích thước là 3
        ExecutorService executor = Executors.newFixedThreadPool(3);

        // Submit các tác vụ cho thread pool
        for (int i = 0; i < 5; i++) {
            Runnable task = new MyTask("Task " + i);
            executor.submit(task);
        }

        // Shutdown thread pool sau khi tất cả các tác vụ đã hoàn thành
        executor.shutdown();
    }
}

class MyTask implements Runnable {
    private String taskName;

    public MyTask(String name) {
        this.taskName = name;
    }

    public void run() {
        System.out.println("Task " + taskName + " is running.");
        try {
            Thread.sleep(2000); // Giả lập một tác vụ mất thời gian
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Task " + taskName + " is completed.");
    }
}
Mô hình Thread pool

Trong ví dụ trên, chúng ta tạo một Thread Pool với kích thước là 3 và submit 5 tác vụ vào thread pool. Thread Pool sẽ tự động quản lý và phân công các tác vụ cho các luồng có sẵn trong pool.

Việc hiểu và sử dụng Thread và Thread Pool là một phần quan trọng giúp tối ưu hóa hiệu suất và tài nguyên của ứng dụng Java. Bằng cách sử dụng chúng một cách hiệu quả, bạn có thể tận dụng tối đa tiềm năng của hệ thống và cải thiện trải nghiệm người dùng.

Reference:

Finally Getting the Most out of the Java Thread Pool – Stackify

Avatar photo

One Reply to “Tìm hiểu Thread và Thread pool trong Java phần 3”

Leave a Reply

Your email address will not be published. Required fields are marked *