Рубрика Java для опытных

Полезные уроки для опытных Java программистов. Начинаем писать сложные программы.

Интерфейсы Callable и Future в Java

Интерфейс Runnable инкапсулирует задачу, выполняющуюся асинхронно. Вы можете воспринимать это как асинхронный метод без параметров и возвращаемого значения. Callable подобен Runnable, но с возвратом значения. Интерфейс Callable является параметризованным типом, с единственным общедоступным методом call().

Блокированные и ожидающие потоки Java

Когда поток заблокирован или находится в состоянии ожидания, он временно не активен. Он не выполняет никакого кода и потребляет минимум ресурсов. На планировщике потоков лежит обязанность повторно активизировать его. Подробности зависят от того, как было достигнуто неактивное состояние.

Обработчик неперехваченных исключений Java

Метод run() потока не может генерировать никаких контролируемых исключений, но может быть прерван неконтролируемым исключением. В этом случае поток уничтожается. Однако нет конструкции catch, куда может распространиться исключение. Вместо этого непосредственно перед смертью потока исключение передается обработчику неперехваченных исключений.

Web-службы и JAX-WS в Java

За последние годы популярной технологии для вызовов удаленных методов стали Web-службы(Web-services). С технической точки зрения каждая Web-служба состоит из двух компонентов: непосредственно самой службы, доступ которой может получаться с помощью транспортного протокола SOAP; описания службы в формате WSDL.

Использование локального буфера обмена для передачи ссылок на объекты Java

Иногда может возникать необходимость в копировании и вставке данных такого типа, которые не поддерживаются системным буфером обмена, то есть не является сериализируемым. Для передачи ссылки на произвольный объект Java в пределах одной и той же виртуальной машины (JVM) применяется тип…

Прерываемые сокеты Java

При подключении с помощью сокета текущий поток блокируется до тех пор, пока соединение не будет установлено, или до истечения времени тайм-аута. Аналогично, если вы пытаетесь передать или прочитать данные посредством сокета, поток приостановит выполнение до успешного завершения операции или до…

Одностороннее закрытие сокета Java

Одностороннее закрытие(half-close) обеспечивает возможность одной стороне закрыть соединение с сокетом, прекратив отправку своих данных, но при этом получая данные с другой стороны. Вот типичная ситуация. Предположим, что вы отправляете данные на сервер, но не знаете, какой объем данных необходимо передать.…

Чтение и запись больших объектов Java

В дополнение к числам, строкам и датам, многие базы данных могут сохранять большие объекты(large object - LOB), к числу которых относятся изображения и другие данные. В языке SQL существует понятие больших двоичных объектов(binary large object - BLOB) и больших символьных…

Слабые хеш-карты Java

Класс WeakHashMap был спроектирован для решения одной интересной проблемы. Что случится со значением, чей ключ более не используется нигде в вашей прогармме? Предположим, что последняя ссылка на ключ исчезла. Значит, не остается никакого способа сослаться на объект-значение. Но поскольку ни…

Вызов унаследованного кода Java

До появления Java SE 5.0 был написан огромный объем кода Java. Если бы обобщенные классы не могли взаимодействовать с этим кодом, они не получили бы широкого распространения. К счастью, достаточно просто использовать обобщенные классы вместе с их "сырыми" эквивалентами из…