powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / lock with timeout
3 сообщений из 3, страница 1 из 1
lock with timeout
    #37791222
OOsalivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть разделяемый ресурс (метод) , когда какой нибудь один поток выполняет этот метод, все остальные которые пытаются его дернуть должный перейти в состояние ожидания, но должны ждать не "всегда" а только определенный промежуток времени и если в течении этого времени ресурс не освободиться то кидать эксепшин и завершать работу. Это легко делаться с помощью wait/notify , но решил заюзать java.util.concurrent (см код ниже). Покритикуйте решение :)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   private  final Lock lock = new ReentrantLock();
    
    private static final int MAX_LOCK_TIME = 5;
    
    public  void lock() throws InterruptedException {
        int tryConut = 0;
        while (!lock.tryLock(1, TimeUnit.SECONDS)) {
            if(++tryConut>MAX_LOCK_TIME) {
               throw new RuntimeException("Max Lock time is exceeded");
            }
        }

        //некие действия с разделяемым ресурсом

        lock.unlock();
    }
...
Рейтинг: 0 / 0
lock with timeout
    #37791275
Морфий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OOsalivan,
Может попробовать
Condition

И
Код: java
1.
lock.unlock();


Вроде бы лучше в finally оборачивать. Или как?
...
Рейтинг: 0 / 0
lock with timeout
    #37791334
OOsalivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МорфийOOsalivan,
Может попробовать
Condition

И
Код: java
1.
lock.unlock();


Вроде бы лучше в finally оборачивать. Или как?

Как именно Condition попробовать?

Лучше в finally но в том и смысл примера что если мы не сделали lock.unlock() в течении заданного промежутка времени и при этом на локе висели потоки то кидать эксепшин
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / lock with timeout
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]