Khởi tạo và chạy một thread trong Java

Công Nghệ
Khởi tạo và chạy một thread trong Java
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong Java, chúng ta có 2 cách để khởi tạo và chạy một thread, đó là sử dụng class Thread hoặc là interface Runnable. Cụ thể như thế nào, trong bài viết này, chúng ta sẽ cùng nhau...

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Trong Java, chúng ta có 2 cách để khởi tạo và chạy một thread, đó là sử dụng class Thread hoặc là interface Runnable. Cụ thể như thế nào, trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về chúng các bạn nhé!

Class Thread

Các bạn có thể dễ dàng tạo mới một thread bằng cách extend class của các bạn từ class Thread rồi sau đó override phương thức run() của class Thread này. Code bên trong run() method sẽ là tác vụ mà chúng ta cần execute trong thread mới.

Ví dụ mình muốn tạo mới một thread để tính tổng của 2 số bằng cách extend class Thread thì mình sẽ tạo mới một class extend class Thread và override lại phương thức run() như sau:

package com.huongdanjava.javaexample;

public class Calculator extends Thread {

    @Override
    public void run() {
        int a = 2;
        int b = 7;

        int sum = a + b;

        System.out.println(sum);
    }

}

Để chạy thread trong trường hợp này, chúng ta sẽ tạo mới instance của class Calculator và gọi phương thức start() của đối tượng này để chạy các bạn nhé. Ví dụ:

package com.huongdanjava.javaexample;

public class Example {

public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.start();
}

}

Kết quả:

Khởi tạo và chạy một thread trong JavaKhởi tạo và chạy một thread trong Java

Các bạn có thể thấy rõ việc code của chúng ta được execute trong main thread hay là một thread khác bằng cách add thêm một số dòng code như sau:

package com.huongdanjava.javaexample;

public class Calculator extends Thread {

    @Override
    public void run() {
        System.out.println("Calculator : " + Thread.currentThread().getName());

        int a = 2;
        int b = 7;

        int sum = a + b;

        System.out.println(sum);
    }

}
package com.huongdanjava.javaexample;

public class Example {

public static void main(String[] args) {
    System.out.println("Main : " + Thread.currentThread().getName());

Calculator calculator = new Calculator();
calculator.start();
}

}

Kết quả:

Khởi tạo và chạy một thread trong JavaKhởi tạo và chạy một thread trong Java

Nếu các bạn để ý thì sẽ có thắc mắc là nếu chúng ta gọi phương thức run() thay vì phương thức start() của class Calculator thì có sự khác biệt gì? Câu trả lời là nếu các bạn gọi phương thức run() thì code bên trong nó sẽ được execute trong cùng thread của chương trình thay vì một thread mới.

Ví dụ nếu bây giờ mình đổi qua gọi phương thức run() trong hàm main của ứng dụng:

package com.huongdanjava.javaexample;

public class Example {

public static void main(String[] args) {
    System.out.println("Main : " + Thread.currentThread().getName());

Calculator calculator = new Calculator();
calculator.run();
}

}

các bạn sẽ thấy kết quả như sau:

Khởi tạo và chạy một thread trong JavaKhởi tạo và chạy một thread trong Java

Interface Runnable

Với interface Runnable thì class của các bạn cần implement interface này và hiện thực phương thức run() được định nghĩa trong nó.

Trong ví dụ trên, thay vì extend từ class Thread mình có thể implement interface Runnable như sau:

package com.huongdanjava.javaexample;

public class Calculator implements Runnable {

    public void run() {
        System.out.println("Calculator : " + Thread.currentThread().getName());

        int a = 2;
        int b = 7;

        int sum = a + b;

        System.out.println(sum);
    }

}

Để tạo mới thread và chạy ứng dụng của chúng ta trong trường hợp này, các bạn cần tạo mới class Thread với tham số là class implement interface Runnable của chúng ta. Ví dụ như sau:

package com.huongdanjava.javaexample;

public class Example {

public static void main(String[] args) {
    System.out.println("Main : " + Thread.currentThread().getName());

    Thread thread = new Thread(new Calculator());
    thread.start();
}

}

Kết quả cũng như vậy:

Khởi tạo và chạy một thread trong JavaKhởi tạo và chạy một thread trong Java

Tổng kết

Việc sử dụng extend class Thread hay implement interface Runnable là tuỳ vào nhu cầu của các bạn nhưng mình prefer việc implement interfacve Runnable hơn vì trong Java, chúng ta có thể implement nhiều interface khác nhau nhưng chỉ có thể extend từ một class nào đó.

Bài viết gốc được đăng tải tại huongdanjava.com

Có thể bạn quan tâm:

Xem thêm Tuyển Java lương cao hấp dẫn trên Station D

Bài viết liên quan

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Kết quả từ cuộc khảo sát đầu năm của Station D về lương bổng của lập trình viên cho thấy nhiều thay đổi đã và đang diễn ra trong ngành IT – cuộc khảo sát tập trung vào các câu hỏi về khối lượng công việc, triển vọng cũng như...

By stationd
Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

Khi nhắc đến blockchain , lập tức mọi người thường nghĩ ngay đến các loại tiền mã hóa, chẳng hạn như bitcoin. Tuy nhiên, blockchain lại là công nghệ tạo ra tiền mã hóa nhưng bản thân công nghệ này không phải là tiền mã hóa như cách mà chúng...

By stationd
Mock phương thức static trong Unit Test sử dụng PowerMock

Mock phương thức static trong Unit Test sử dụng PowerMock

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết này, mình sẽ hướng dẫn các bạn Mock các phương thức static trong Unit Test các bạn nhé! Nếu bạn nào chưa biết về Mock trong Unit Test thì mình có thể nói sơ qua...

By stationd