На flash делают уже вполне достойные игры. Например, Снайпер. Интересная игра про высадку союзных войск в Нормандии.
И вот дают нам очередную миссию:
Вот в прицел мы видим фрицев:
Смотреть можно не только в прицел:
Крестиками помечаются трупы, так что искать придётся всё равно через прицел.
Между миссиями пишут разные сообщения, сопровождая их прикольными картинками:
А вот и мой результат.
вторник, 22 апреля 2008 г.
Java Puzzle 84: Rudely Interrupted
В этой задаче мы пытаемся прервать исполнение текущего потока, а затем проверяем удалось это или нет. Что напечатает следующая программа:
Вы удивитесь, но она напечатает "Interrupted: false"
Но почему? Дело в том, что вызов метода
public class SelfInterruption {
public static void main(String[] args) {
Thread.currentThread().interrupt();
if (Thread.interrupted()) {
System.out.println("Interrupted: "
+ Thread.interrupted());
} else {
System.out.println("Not interrupted: "
+ Thread.interrupted());
}
}
}
Вы удивитесь, но она напечатает "Interrupted: false"
Но почему? Дело в том, что вызов метода
Thread.interrupted()
всегда очищает состояние флага interrupted текущего потока. Ну мы и получили, что первый вызов вернул true
, а второй - false
. Для решения проблемы нужно вызывать метод Thread.currentThread().isInterrupted()
, который не изменяет состояние флага interrupted.
Java Puzzle 83: Dyslexic Monotheism
Однажды один мужик режил что он единственный такой исключительный пёс. И тогда он написал класс, думая что написал singleton:
Но он ошибался. Во всём. Сможете ли вы создать второй экземпляр класса
Ну тут надо сообразить, что класс
А иначе при десериализации вы получите другой экземпляр.
public class Dog extends Exception {
public static final Dog INSTANCE = new Dog();
private Dog() {
}
public String toString() {
return "Woof";
}
}
Но он ошибался. Во всём. Сможете ли вы создать второй экземпляр класса
Dog
не используя reflection?Ну тут надо сообразить, что класс
Exception
является Serializable
. А дальше всё просто. Эта проблема и её решение были описаны в книге Effective Java: singleton, который имплементирует интерфейс Serializable
должен определять readResolve
метод, который возвращает единственный экземпляр:public class Dog extends Exception {
public static final Dog INSTANCE = new Dog();
private Dog() {
}
private Object readResolve() {
return INSTANCE;
}
public String toString() {
return "Woof";
}
}
А иначе при десериализации вы получите другой экземпляр.
Подписаться на:
Сообщения (Atom)