Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 2
Регистрация: 01.11.2013
Сообщений: 154
1

Симуляция автомобильного паркинга с помощью семафоров

17.11.2016, 00:56. Показов 1203. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача состоит в том чтобы сделать симуляцию автомобильного паркинга. Паркинг имеет 20 мест, автомобили приезжают туда время от времени (рандомное число в sleep), если есть свободное место заезжает туда и находятся на нем некоторое время (так же рандомное число в sleep). Если нету мест - ждет в очереди,пока не освободится место. Создай 100 автомобилей (100 потоков) и сам паркинг. Используй семафоры. Дополнительно поток автомобиля должен определиться, будет ли он ждать в очереди или поедет на другой паркинг (вероятность остаться в очереди 75%). Используй метод tryAcquire (), возвращающий логическое значение в зависимости от доступа разрешений в семафоре. Создай так же поток демона, который каждые 5 секунд будет показывать полезную информацию для водителя (количество свободных мест на паркинге/число автомобилей в очереди).

Вот так пока выглядит половина программы, не понимаю как реализовать правильно демона нашего который будет каждые 5 секунд писать количество свободных мест и т.д,есть у меня пример с потоком Демон где в run() работает while(true) и эта информация там обрабатывалась нашим демоном пока наш sleep держал основной поток мейн несколько секунд,там все понятно,но не понятно как здесь это реализовать. На счет вероятности в 75 тоже хотелось бы узнать поподробней и о tryAcquire () в нашей задаче. Спасибо
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.concurrent.Semaphore;
class Samochod extends Thread{
    
    private static final Semaphore parking = new Semaphore(20,true);//парктинг с 20 свободными местами
    
    private String nazwa;
    
    
    public Samochod(String nazwa){
        setDaemon(true);//создаем демона
        this.nazwa = nazwa;//название авто
    }
    @Override
    public void run(){
        /*try{ //вот проблема здесь с демоном 
            sleep(5000);
            System.out.println("Aktualna ilosc miejsc na parkingu: " + parking.availablePermits() + " Aktualna kolejka: " +   parking.getQueueLength()); //актуальная информация об количестве мест на парковке и какая очередь
        }catch(InterruptedException e){
        }*/
        try {
            System.out.println("Samochod: " + nazwa + " przybyЕ‚ na parking."); //прибыл на паркинг
            parking.acquire(); 
            System.out.println("Samochod: " + nazwa + " zajД…Е‚ miejsce."); //занял место
            sleep((long)(Math.random()*100000)); //стоит на паркинге около минуты
        } catch (InterruptedException e) {
            System.out.println("BЕ‚Д…d"); //ошибка
        } finally { 
            System.out.println("Samochod: " + nazwa + " opuЕ›ciЕ‚ miejsce"); //автомобиль (название авто) покинул место 
            parking.release(); 
        }
    }
}
 
 
 
public class Temat6Zadanie2{
    
    
    public static void main(String [] args){
        
        
        for(int i = 0; i <100; i++) { 
            new Samochod("S"+(i+1)).start(); //100 автомобилей
            try { 
                Thread.sleep((int)Math.random()*1000+1000); //интервал 1-2 сек
            } 
            catch(InterruptedException e) { 
                System.out.println("BЕ‚Д…d"); //ошибка
            } 
        }
        
    }   
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2016, 00:56
Ответы с готовыми решениями:

Взаимоисключения с помощью "семафоров" для двух процессов, взаимодействующих через разделяемую память
взаимоисключения с помощью семафоров для двух процессов, взаимодействующих через разделяемую память...

Реализация семафоров
не могу правильно поставить семафоры, чтоб программа правильно отрабатывала.. помогите, я уже...

Реализация семафоров
Возможно ли реализовать семафоры вручную или же для этого нужна обязательная поддержка процессора?

Аргументы для семафоров
у меня есть две нити,которые передают разные значения в метод. в этом методе надо использовать...

0
17.11.2016, 00:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2016, 00:56
Помогаю со студенческими работами здесь

Организовать массив семафоров
в решении задачи думаю использовать массив семафоров, но думаю, как это правильно реализовать....

Использование семафоров и мьютексов
Итак повторный запуск приложения). Уважаемые я конечно понимая что этот вопрос на ряду с &quot;иконкой...

Правильное использование семафоров
Добрый день, использую семафоры для записи чтения двумя потоками в кольцевой буффер. ...

Отобразить id созданых семафоров
Как програмно отобразить id созданых семафоров. Есть возможность отобразить в консоли &quot;ipcs -s&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru