2010-10-19 59 views
7

Đây là kịch bản:Có thể đọc và ghi vào tập tin cùng lúc không?

  • ThreadA sẽ là người đọc từ một số ổ cắm, và ghi dữ liệu vào "myfile.txt"
  • ThreadB sẽ là người đọc "MyFile", và khi nó đạt đến cuối cùng, nó sẽ lặp lại cho đến khi dữ liệu mới có sẵn trong MyFile (vì tôi không muốn mở lại "MyFile.txt", và mất thời gian để tôi đạt được vị trí từ nơi tôi đã ..).

Có thể thực hiện một việc như vậy không?

Nếu không, có cách nào khác để làm một việc như vậy không?

+0

thể trùng lặp của [Làm thế nào để sử dụng Java để đọc từ một tập tin mà đang tích cực được viết?] (Http://stackoverflow.com/questions/4149/ làm thế nào-do-i-sử dụng-java-to-đọc-từ-một-tập-đó-là-tích cực được viết) –

+0

Tôi đã thêm một liên kết đến một câu hỏi mà là một bản sao của một trong những điều này. Nhưng trong quá khứ, bạn đã thấy RandomAccessFile chưa? Bạn không cần phải trải qua toàn bộ tập tin một lần nữa để đọc từ một vị trí cụ thể –

Trả lời

13

Vấn đề bạn đề cập đến là một Producer Consumer Problem

giải pháp chung nổi tiếng này là sử dụng BlockingQueue

Một ví dụ về việc sử dụng thế giới thực là trong AjaxYahooSearchEngineMonitor

Một chủ đề gì là, nó sẽ nộp một chuỗi để xếp hàng, và sau đó trở lại ngay lập tức.

Chủ đề B thực hiện là gì, nó sẽ chọn từng mục một và xử lý chúng. Khi không có mục nào trong hàng đợi, Chủ đề B sẽ đợi ở đó. Xem dòng 83 của mã nguồn.

+0

cảm ơn bạn rất nhiều !! đó là chính xác những gì tôi muốn. nó tốt hơn so với đọc/ghi từ DataBase hoặc tệp. – mohamida

2

Tôi nghĩ rằng có thể sử dụng thư viện nio java

+1

Tôi không nghĩ đó là Suresh, nhưng tôi rất vui khi được chỉnh sửa nếu bạn chỉ cho bạn cách thực hiện. –

+0

@Nick sử dụng bộ chọn cho mỗi chuỗi và đồng bộ hóa trên chúng là có thể. –

Các vấn đề liên quan