× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Threading trong Java- Các thông tin cơ bản

11/01/2023 01:25

Phân luồng là khả năng cho các phần khác nhau của chương trình chạy đồng thời. Phần hiện đang chạy của chương trình có thể bắt đầu một luồng khác sẽ chạy mã ở chế độ nền khi mã ban đầu sinh ra luồng tiếp tục thực thi.

Phân luồng là khả năng cho các phần khác nhau của chương trình chạy đồng thời. Phần hiện đang chạy của chương trình có thể bắt đầu một luồng khác sẽ chạy mã ở chế độ nền khi mã ban đầu sinh ra luồng tiếp tục thực thi. Điều này cho phép chạy các thủ tục phức tạp mà không làm gián đoạn việc thực thi phần còn lại của chương trình.

Các phần khác nhau của chương trình đang hoạt động đồng thời được gọi là “luồng” và mã bắt đầu thực thi trước, bắt đầu các quy trình khác này, thường được gọi là “luồng chính”. Hai cách mà các luồng có thể được thực hiện trong Java là với các lớp hoặc với các giao diện .

Điều kiện

Vì Java hỗ trợ chạy nhiều luồng cùng một lúc nên luôn có nguy cơ gây ra sự cố tương tranh hoặc điều kiện tương tranh. Điều này xảy ra khi một biến cụ thể đang được truy cập và cập nhật bởi nhiều luồng (đang chạy độc lập và có thể chưa hoàn tất việc thực thi). Nên tránh các biến như vậy trừ khi được xác nhận rằng các luồng có thể sửa đổi chúng đã hoàn thành việc thực hiện.

Sử dụng lớp chủ đề

Các luồng có thể được định nghĩa trong một lớp mở rộng Threadlớp đó và ghi đè .run()phương thức của nó:

cú pháp

public class MyThread extends Thread {
  public void run() {
    // Code to run in separate thread
  }
}

Mã trong .run()phương thức là những gì sẽ chạy trong một luồng riêng biệt khi luồng đó được bắt đầu. Chuỗi được bắt đầu bằng cách tạo một thể hiện của lớp này và gọi .start()phương thức của nó:

MyThread thread = new MyThread();
thread.start();
 

Triển khai Giao diện Runnable

Một cách khác để tạo chủ đề là triển khai Runnablegiao diện:

cú pháp

public class MyRunnable implements Runnable {
  public void run() {
    // Code to run in separate thread
  }
}

Xin nhắc lại, mã trong .run()phương thức sẽ chạy trong một luồng riêng biệt khi luồng đó được bắt đầu. Chuỗi được bắt đầu bằng cách tạo một thể hiện của lớp này và chuyển nó tới hàm tạo của Threadlớp, sau đó gọi .start()phương thức trên thể hiện đó của Threadlớp.

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start()