Tôi có một quy trình Java mở tệp bằng FileReader. Làm cách nào để ngăn quá trình (Java) khác mở tệp này, hoặc ít nhất là thông báo cho quá trình thứ hai rằng tệp đã được mở? Điều này có tự động làm cho quy trình thứ hai nhận được ngoại lệ nếu tệp đang mở (giải quyết vấn đề của tôi) hay tôi phải mở nó một cách rõ ràng trong quy trình đầu tiên với một số loại cờ hoặc đối số?
Làm rõ:
Tôi có một ứng dụng Java liệt kê một thư mục và mở từng tệp trong danh sách để xử lý nó. Nó xử lý từng tệp này đến tệp khác. Quá trình xử lý mỗi tệp bao gồm đọc nó và thực hiện một số tính toán dựa trên nội dung và mất khoảng 2 phút. Tôi cũng có một ứng dụng Java khác làm điều tương tự nhưng thay vào đó ghi trên tệp. Điều tôi muốn là có thể chạy các ứng dụng này cùng một lúc để tình huống diễn ra như thế này. ReadApp liệt kê thư mục và tìm các tệp A, B, C. Nó mở tệp A và bắt đầu đọc. WriteApp liệt kê thư mục và tìm các tệp A, B, C. Nó mở tệp A, thấy tệp đang mở (bằng một ngoại lệ hoặc bất kỳ cách nào) và chuyển đến tệp B. ReadApp kết thúc tệp A và tiếp tục đến B. Nó thấy rằng nó đang mở và tiếp tục đến C. Điều quan trọng là WriteApp không ' t ghi trong khi ReadApp đang đọc cùng một tệp hoặc ngược lại. Chúng là các quá trình khác nhau.