Tôi thấy một cách sử dụng tốt để hoàn thiện(): giải phóng tài nguyên có sẵn với số lượng lớn và không độc quyền.
Ví dụ: theo mặc định, có 1024 tệp xử lý có sẵn cho quy trình Linux và khoảng 10000 cho Windows. Điều này là khá nhiều, vì vậy đối với hầu hết các ứng dụng nếu bạn mở một tập tin, bạn không cần phải gọi .đóng() (và sử dụng thử xấu xí ... cuối cùng là khối), và bạn sẽ OK - cuối cùng() sẽ miễn phí nó cho bạn một thời gian sau đó. Tuy nhiên đối với một số đoạn mã (như các ứng dụng máy chủ chuyên sâu), việc giải phóng tài nguyên với .close() là phải, nếu không cuối cùng() có thể được gọi là quá muộn cho bạn và bạn có thể hết các tập tin. Kỹ thuật tương tự được sử dụng bởi Swing - tài nguyên hệ điều hành để hiển thị cửa sổ và bản vẽ không được phát hành bởi bất kỳ phương thức .close() nào, nhưng chỉ bằng cách hoàn thành(), vì vậy bạn không phải lo lắng về tất cả. các phương thức close() hoặc .dispose() như trong SWT chẳng hạn.
Tuy nhiên, khi có số lượng tài nguyên rất hạn chế hoặc bạn phải 'khóa' tài nguyên để sử dụng tài nguyên, hãy nhớ 'mở khóa' tài nguyên đó. Ví dụ: nếu bạn tạo khóa tệp trên tệp, hãy nhớ cũng xóa khóa này, nếu không sẽ không ai đọc được hoặc ghi tệp này và điều này có thể dẫn đến deadlocks - sau đó bạn không thể dựa vào finalize() để xóa khóa này cho bạn - bạn phải làm điều đó theo cách thủ công ở đúng nơi.
Bạn có thể sử dụng nó làm điểm dừng cửa hoặc neo thuyền :-) –
: Bạn có nghĩa là nó đủ nặng hoặc không nổi? – Simeon