Объектно-ориентированное программирование. Java
Практика 6
Напишите программу, моделирующую синхронизацию работы пользователей, читающих информацию из таблицы БД (readers) и вносящих в нее изменения (writers).
Несколько параллельных процессов работают с таблицей БД. Readers только читают информацию. Writers хотят производить модификации (читать и писать).
Два (или более) readers могут одновременно получить доступ и работать с таблицей. Но если доступ получил один writer, никто другой больше не может иметь доступ к таблице.
Несколько вариантов обеспечения синхронизации:
The first readers-writers problem:
Reader ждет получения доступа к таблице только если таблица занята writer’ом. Если таблицу читают reader’ы, то новый reader сразу получает доступ, даже если есть ждущий writer.
Проблема: writers оказываются угнетенными.
The second readers-writers problem:
Если имеется ждущий writer, никакой новый reader не может получить доступ к таблице.
Проблема: readers оказываются угнетенными.
Программа должна смоделировать решение первой readers-writers problem с помощью семафоров.
Рекомендации:
1. Каждый readerспит случайное время, затем читает в течение случайного времени.
Каждый writerспит случайное время, затем читает в течение случайного времени.
2. Когда reader хочет читать из БД, он запускает метод startRead(); при окончании чтения – запускает endRead(). Каждый writer поступает так же.
3. Создайте класс Database. В нем не будет таблиц, и процессы в действительности не будут читать из файла. В классе Database будут: конструктор, функция задержки, моделирующая чтение из таблицы, функции startRead(), endRead(),startWrite(), endWrite(), необходимые поля данных и семафор(ы).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.