Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa khóa cấp độ đối tượng và khóa cấp độ lớp trong Java

Trong môi trường đa luồng, hai hoặc nhiều luồng có thể truy cập đồng thời các tài nguyên được chia sẻ, điều này có thể dẫn đến hành vi không nhất quán của hệ thống. Java sử dụng khái niệm khóa để hạn chế truy cập đồng thời các tài nguyên hoặc đối tượng được chia sẻ. Các khóa có thể được áp dụng ở hai cấp độ -

  • Object Level Locks - Nó có thể được sử dụng khi bạn muốn phương thức không tĩnh hoặc khối không tĩnh của mã chỉ được một luồng truy cập.
  • Khóa Cấp độ Lớp - Nó có thể được sử dụng khi chúng ta muốn ngăn nhiều luồng nhập vào khối được đồng bộ hóa trong bất kỳ trường hợp nào có sẵn trong thời gian chạy. Nó phải luôn được sử dụng để làm cho chuỗi dữ liệu tĩnh an toàn.
Phím
Sr. Không.

Khóa Cấp độ Đối tượng
Khóa Cấp độ Lớp học

1

Cơ bản

Nó có thể được sử dụng khi bạn muốn phương thức không tĩnh hoặc khối không tĩnh của mã chỉ được truy cập bởi một luồng

Nó có thể được sử dụng khi chúng ta muốn ngăn nhiều luồng nhập vào khối được đồng bộ hóa trong bất kỳ trường hợp nào có sẵn trong thời gian chạy

2

Tĩnh / Không tĩnh

Nó phải luôn được sử dụng để làm cho chuỗi dữ liệu không tĩnh được an toàn.

Nó phải luôn được sử dụng để làm cho chuỗi dữ liệu tĩnh được an toàn.


3

Số lượng khóa

Mọi đối tượng trong lớp có thể có khóa riêng của chúng

Nhiều đối tượng của lớp có thể tồn tại nhưng luôn có sẵn khóa đối tượng của một lớp

Ví dụ về Khóa cấp độ lớp

public class ClassLevelLockExample {
   public void classLevelLockMethod() {
      synchronized (ClassLevelLockExample.class) {
         //DO your stuff here
      }
   }
}

Ví dụ về Khóa mức đối tượng

public class ObjectLevelLockExample {
   public void objectLevelLockMethod() {
      synchronized (this) {
         //DO your stuff here
      }
   }
}