[Изучаю Java] Помогите найти ошибки в коде
В рамках изучения Java написал неполную реализацию интерфейса java.util.concurrent.locks.LockМожет, стоит начать с чего-то попроще? Например, отсортировать массив пузырьком.
"lockCount cannot be less than 0"[/troll]
catch (InterruptedException e) {Это ошибка.
}
synchronized (guard)
И вообще надо использовать атомарные операции, а ты всё сразу жёстко лочишь. Это будет работать медленно.
"lockCount cannot be less than 0"Спасибо, исправил.
И вообще надо использовать атомарные операции, а ты всё сразу жёстко лочишь. Это будет работать медленно.Производительность меня не интересует, только корректность.
Это ошибка.
Почему?
Почему?Потому что interrupted state надо возвращать на место, а ты игнорируешь исключение и всё.
Потому что interrupted state надо возвращать на место, а ты игнорируешь исключение и всё.эээ
для начала надо понять почему оно происходит
а потом уже правильно его обработать
но игнорировать да, по-любому неправильно
прога тогда может зависнуть если на крестик нажать
Потому что interrupted state надо возвращать на место, а ты игнорируешь исключение и всё.Когда вылетает исключение, interrupted само устанавливается на false.
для начала надо понять почему оно происходитИ почему оно, по-твоему, происходит при Object.wait? И какие варианты там, по-твоему, есть, что флаг не нужно возвращать на место?
Когда вылетает исключение, interrupted само устанавливается на false.Вот именно, поэтому надо вернуть его на место. (Читать: на true.)
И почему оно происходит при Object.wait?официально: если этот поток хотят завершить
например при завершении программы
в таком случае не надо это исключение игнорировать
а надо предпринимать что-то осмысленное: например выставлять некий флаг, снимать все локи и больше никому не давать ставить локи говоря что мы сломались
[bred_mode]
неофицильно: сановская джава кидает этот эксепшн от балды
и хрен что с этим поделаешь
[/bred_mode]
Вот именно, поэтому надо вернуть его на место.не понятно
официально: если этот поток хотят завершитьНеправильно. В lock надо всё нормально залочить и вернуть флаг на место перед возвратом.
например при завершении программы
в таком случае не надо это исключение игнорировать
а надо предпринимать что-то осмысленное: например выставлять некий флаг, снимать все локи и больше никому не давать ставить локи говоря что мы сломались
неофицильно: сановская джава кидает этот эксепшн от балды
и хрен что с этим поделаешь
Это что за сказки?
Неправильно. В lock надо всё нормально залочить и вернуть флаг на место перед возвратом.и что дальше?
никто на этот флаг больше никогда не посмотрит
Это что за сказки?суровая реальность
я на джаве уже давно не пишу, подробностей не помню
и что дальше?Что за бред? На него никто не посмотрит, если ты его не восстановишь.
никто на этот флаг больше никогда не посмотрит
суровая реальность
я на джаве уже давно не пишу, подробностей не помню
А я на ней всё время пишу, и подробности помню. Может быть, тебе стоит освежить память, прежде чем говорить полную чушь?
суровая реальностьможет быть ты со spurious wakeups путаешь?
я на джаве уже давно не пишу, подробностей не помню
Потому что interrupted state надо возвращать на место, а ты игнорируешь исключение и всё.Да, ты прав. Спасибо за обсуждение.
может быть ты со spurious wakeups путаешь?ой
от меня вчера проглючило
interrupt и wakeup спутал
Оставить комментарий
luna89
В рамках изучения Java написал неполную реализацию интерфейса java.util.concurrent.locks.LockПрошу высказать критику