Интерфейс ActiveEvent
- Все известные реализующие классы:
- InvocationEvent
public interface ActiveEvent
Интерфейс для событий, которые знают, как передавать себя. Реализуя этот интерфейс, событие может быть помещено в очередь событий, и его метод dispatch() будет вызван при передаче события, используя EventDispatchThread.
Это очень полезный механизм для предотвращения тупиковых ситуаций. Если поток выполняется в критической секции (т. е. вошел в один или несколько мониторов), вызов другого синхронизированного кода может привести к тупиковой ситуации. Чтобы избежать потенциальных тупиковых ситуаций, можно создать ActiveEvent, чтобы выполнить вторую часть кода в более позднее время. Если есть конфликт на мониторе, второй поток просто заблокируется до тех пор, пока первый поток не завершит свою работу и не выйдет из своих мониторов.
По соображениям безопасности часто желательно использовать ActiveEvent для предотвращения вызова недоверенного кода из критического потока. Например, реализующие стороны могут использовать эту возможность, чтобы избежать вызовов в пользовательский код из системного потока. Это предотвращает потенциальные тупиковые ситуации и атаки типа "отказ в обслуживании".
- С момента:
- 1.2
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
dispatch() Передать событие своему целевому объекту, слушателям источника события или выполнить все, что это событие должно сделать. |
Методы
dispatch
void dispatch()
Передать событие своему целевому объекту, слушателям источника события или выполнить все, что это событие должно сделать.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.