tailieunhanh - Đồng bộ dữ liệu khi truy xuất tập tin với Java

Có những chương trình ứng dụng đòi hỏi việc ghi thông tin vào tập tin (file) để quản lý (log) hay chia sẻ dữ liệu giữa các tiến trình (process) hay tiểu trình (thread). Một vấn đề thường đặt ra đó là đồng bộ dữ liệu trong khi đọc hay ghi file. Giả sử hai tiến trình A và B cùng lúc ghi dữ liệu vào file X (hoặc một tiến trình ghi và một tiến trình đọc) thì khi đó dữ liệu được xử lý ra sao? Chúng ta xem một ứng dụng thực tế sau: Ta dùng. | Đồng bộ dữ liệu khi truy xuất tập tin với Java Có những chương trình ứng dụng đòi hỏi việc ghi thông tin vào tập tin file để quản lý log hay chia sẻ dữ liệu giữa các tiến trình process hay tiểu trình thread . Một vấn đề thường đặt ra đó là đồng bộ dữ liệu trong khi đọc hay ghi file. Giả sử hai tiến trình A và B cùng lúc ghi dữ liệu vào file X hoặc một tiến trình ghi và một tiến trình đọc thì khi đó dữ liệu được xử lý ra sao Chúng ta xem một ứng dụng thực tế sau Ta dùng file để đếm số người truy cập vào một trang web. Giả sử con số trong file này đã là 1000. Giả sử có 2 người cùng truy cập site vào một thời điểm khi đó có 2 giao dịch xảy ra Giao dịch 1 f open hits Như vậy giao dịch 1 đọc 1000 vào biến hits. Tương tự giao dịch 2 cũng đọc 1000 vào biến hits. Sau đó hits Print Hits on this page hits Mỗi giao dịch tăng giá trị hits của mình và mỗi giao dịch có được con số 1001. Sau đó hai giao dịch thực hiện việc cập nhật số lần truy cập trong file lên 1001. f open hits Vấn đề ở đây là trang web đã được truy cập 2 lần trong khi giá trị đếm chỉ tăng lên 1. Đó là chưa kể mỗi người sử dụng đều thấy giá trị đếm là 1001 thay vì một người thấy 1001 và một người thấy 1002. Ở đây ta dùng cơ chế Semaphore để giải quyết vấn đề. Một tiểu trình trước khi truy xuất file đọc ghi phải đưa ra yêu cầu acquire để được cấp phát tài nguyên. Sau khi xong việc phải trả lại release tài nguyên cho trình quản lý. Class Semaphore sẽ hiện thực interface trong Code 1. Ta hình dung Semaphore như một cơ chế cấp phát tài nguyên mà ở đó số lượng tài nguyên có hạn. Khi một tiểu trình xin cấp phát tài nguyên nó kiểm tra xem có còn tài nguyên hay không. Nếu còn thì tiến hành cấp phát ngược lại báo tiến trình đó chờ đến khi tiểu trình khác giải phóng tài nguyên thì tiến hành cấp phát. Ở đây có hai chế độ chờ chờ cho đến khi được cấp phát acquire hay chờ trong khoảng thời gian bao lâu attempt - trường hợp này nhằm tránh .

TỪ KHÓA LIÊN QUAN
crossorigin="anonymous">
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.