Có một chương trình bên ngoài tạo tệp XML nhưng có thể mất một lúc để tạo. Tôi cần chương trình Java của mình để chờ cho đến khi tệp tồn tại trước khi tiếp tục.Làm cách nào để phương thức của tôi chờ tệp tồn tại trước khi tiếp tục
Tôi đã được đọc lên một chút về khối đồng bộ, và tôi đọc mà tôi có thể làm điều gì đó như thế này:
synchronized(this) {
while (!file.exists) { this.wait(); }
}
Thành thật mà nói tôi không thực sự biết nhiều về nhiệm vụ đồng bộ vì vậy tôi Tôi tự hỏi liệu tôi có đi đúng hướng hay không.
Hết thời gian chờ (thời gian chờ lâu); vì vậy mà sau cùng một thời gian thread nên thức dậy. – Prashant
No. Đây hoàn toàn không phải là cách thức hoạt động này, hãy quên đi 'đồng bộ'. Bạn có thể 1) chờ cho chương trình kết thúc, hoặc viết một cái gì đó từ chương trình đến stdout khi chương trình ghi tập tin; hoặc 2) sử dụng ['WatchService'] (http://stackoverflow.com/q/16251273/2071828) để theo dõi các thay đổi thư mục. –
Thứ nhất, 'synchronised' liên quan đến các chương trình đa luồng. Thứ hai, chương trình bên ngoài đang chạy độc lập với chương trình java của bạn, hoặc chương trình java của bạn khởi chạy chương trình bên ngoài này? –