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

Ví dụ về tham chiếu mềm và tham chiếu ảo?

Các tham chiếu mềm thường được sử dụng để triển khai các bộ nhớ đệm nhạy cảm với bộ nhớ. Hãy để chúng tôi xem một ví dụ về tùy chọn mềm trong Java -

Ví dụ

import java.lang.ref.SoftReference;
class Demo{
   public void display_msg(){
      System.out.println("Hello there");
   }
}
public class Demo_example{
   public static void main(String[] args){
      Demo my_instance = new Demo();
      my_instance.display_msg();
      SoftReference<Demo> my_softref = new SoftReference<Demo>(my_instance);
      my_instance = null;
      my_instance = my_softref.get();
      my_instance.display_msg();
   }
}

Đầu ra

Hello there
Hello there

Một lớp có tên là Demo chứa một hàm có tên là ‘display_msg’, sẽ hiển thị thông báo có liên quan. Một lớp khác có tên là ‘Demo_example’ được định nghĩa, chứa hàm chính. Ở đây, một thể hiện của lớp Demo được tạo và hàm ‘display_msg’ được gọi trên thể hiện này. Thể hiện ASoftReference cho lớp Demo được tạo và thể hiện được gán cho null. Hàm ‘get’ được gọi trên đối tượng hội nghị mềm này và được gán cho phiên bản trước. Hàm ‘display_msg ’được gọi trong trường hợp này. Thông báo liên quan được hiển thị trên bảng điều khiển.

Tham chiếu Phantom thường được sử dụng để lên lịch cho các hành động dọn dẹp trước khi giết mổ theo cách linh hoạt hơn có thể với cơ chế hoàn thiện Java.

Bây giờ chúng ta hãy xem một ví dụ về Phantom References -

Ví dụ

import java.lang.ref.*;
class Demo{
   public void display_msg(){
      System.out.println("Hello there");
   }
}
public class Demo_example{
   public static void main(String[] args){
      Demo my_instance = new Demo();
      my_instance.display_msg();
      ReferenceQueue<Demo> refQueue = new ReferenceQueue<Demo>();
      PhantomReference<Demo> phantomRef = null;
      phantomRef = new PhantomReference<Demo>(my_instance,refQueue);
      my_instance = null;
      my_instance = phantomRef.get();
      my_instance.display_msg();
   }
}

Đầu ra

Hello there
Exception in thread "main" java.lang.NullPointerException
at Demo_example.main(Demo_example.java:22)

Một lớp có tên Demo chứa một hàm có tên là ‘display_msg’ hiển thị một thông báo có liên quan. Một lớp khác có tên Demo_example chứa hàm chính. Hàm này chứa thể hiện của lớp Demo và hàm ‘display_msg’ được gọi trên nó. Sau đó, một cá thể ReferenceQueue được tạo. Một cá thể PhantomReference khác được tạo và gán cho ‘null’. Sau đó, hành động trước được gán cho null, và sau đó hàm ‘display_msg’ được gọi trên trường hợp này. Đầu ra có liên quan được hiển thị trên bảng điều khiển.