855f06e4

Создадим локальную копию набора подписчиков


public abstract class KeyPressedEventSource {
private Vector listeners = new Vector ();
// Массив для хранения набора подписчиков
public synchronized void addKeyPressedListener (KeyPressedListener kpl) { // Зарегистрировать подписчика
listeners.addElement (kpl);
}
public synchronized void removeKeyPressedListener(KeyPressedListener kpl) { // Аннулировать регистрацию
listeners.removeElement (kpl);
}
protected fireKeyPressed (int Key) { // Распространение события (оповещение подписчиков)
Vector l; KeyPressedEvent kpe = new KeyPressedEvent (this, Key);

// Создадим локальную копию набора подписчиков // на момент возникновения события. // В процессе распространения события набор подписчиков // (но не локальная копия!) может изменяться synchronized (this) {l = (Vector) listeners.clone ();
}
// Оповестим подписчиков о наступлении события
for (int i = 0; i < l.size();
i++) { ((KeyPressedListener) l.elementAt(i)).KeyPressed (kpe);
} } }

Начало  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий