Правило единственного потока Java

Правило единственного потока Java

Каждое приложение Java запускается с метода main(), который работает в главном потоке. В программе Swing главный поток живет кратковременно. Он планирует конструирование пользовательского интерфейса в потоке диспетчера событий и завершает свою работу.

После создания пользовательского интерфейса поток диспетчера событий обрабатывает уведомления о событиях наподобие вызовов actionPerformed() или paintComponent(). Другие потоки, такие как поток, отправляющий события в очередь, работают «за кулисами», но эти потоки невидимы прикладному программисту.

Раннее, в наших статьях, мы уже представили правило единственного потока: «не затрагивать компоненты Swing из любого потока, кроме потока диспетчера событий». Здесь мы глубже исследуем это правило. Читать

Работоспособные потоки Java

Работоспособные потоки JavaКак только вы вызовете метод start(), поток оказывается в работоспособном(runnable) состоянии. Работоспособный поток может в данный момент выполняться, а может и нет. Зависит от операционной системы — будет ли выделено потоку время на выполнение. Спецификация Java, однако не назысает это отдельным состоянием. Работающий поток также находится в «работоспособном» состоянии.

Если поток запущен, он не обязательно постоянно продолжает выполняться. Фактически, даже желательно, чтобы выполняющийся поток периодически приостанавливался, давая возможность поработать другим потокам. Детали планирования выполнения потоков зависит от служб, предоставляемых операционной системой. Читать

Создание диалоговых окон в Java

Создание диалоговых окон в JavaКак вы наверное уже знаете, для использования предопределенных диалоговых окон применяется класс JOptionPane. Теперь мы опишем, как «вручную» создать собственное диалоговое окно.

На рис.1 показано типичное модальное диалоговое окно, содержащее сообщение. Подобное окно отображается на экране после того, как пользователь выбрал пункт меню About.

Для того чтобы реализовать такое окно, необходимо создать подкласс класса JDialog. По сути, это тот же процесс, которым мы воспользовались для создания главного окна приложения, расширяя класс JFrame. Читать

Битовые операции в языке Java

Битовые операции в языке JavaРаботая с любыми целочисленными типами, можно применять операции, непосредственно обрабатывающие биты, из которых состоят целые числа. Это значит, что для определения состояния отдельных битов числа можно использовать маски.

В языке Java есть следующие битовые операции: &(«и»), |(«или»), ^(«исключающие или»), ~(«не»). Например, если n — это целое число, то приведенное ниже выражение равно единице только в том случае, если четвертый бит в двоичном представлении числа равен единице. Читать

Сортировка и перетасовка Java

Сортировка и перетасовка JavaВетераны программирования иногда вспоминают о том, как им приходилось использовать перфокарты и как вручную программировать алгоритмы сортировки. В наши дни, конечно, алгоритмы сортировки являются частью стандартной библиотеки в большинстве языков программирования, и язык программирования Java — не исключение.

Метод sort() класса Collections сортирует коллекцию, реализующую интерфейс List. Читать

Взаимодействие апплетов Java

Взаимодействие апплетов JavaВеб-страница может содержать несколько апплетов. Если параметр codebase у этих апплетов один и тот же, они могут взаимодействовать друг с другом. Естественно, что взаимодействие апплетов — довольно сложный процесс, необходимость в котором возникает часто.

Если для каждого апплета задать атрибут name, то с помощью метода getApplet(String), объявленного в интерфейсе AppletContext, можно получить ссылку на любой апплет. Предположим, что в HTML-файле содержится дескриптор: Читать

Кодовые точки и кодовые единицы Java

Кодовые точки и кодовые единицы JavaВ языке Java строки реализованы как последовательности значений типа char. Тип char позволяет задавать кодовые единицы, представляющие кодовые точки Unicode в кодировке UTF-16. Наиболее часто используемые символы Unicode представляются одной кодовой единицей. Дополнительные символы задаются парами кодовых единиц.

Метод length() возвращает количество кодовых единиц для данной строки в кодировке UTF-16. Ниже приведен пример использования данного метода: Читать

Управление файлами в Java

Управление файлами в JavaУправление файлами не ограничивается только чтением и записью. Класс File инкапсулирует все функциональные возможности, которые могут потребоваться для работы с файловой системой на машине пользователя.

Например, его можно применять для выяснения времени последнего изменения файла, а также удаления или переименования файла. Другими словами, классы потоков имеют дело с содержимым файла, а класс File — с хранением файла на диске.

Кроме того, как часто бывает в Java, класс File следует принципу «наименьшего знаменателя». Например, в Windows можно узнавать о наличии у файла флага «только для чтения(и даже устанавливать его), а вот хотя узнавать о том, является ли файл скрытым, можно, скрывать его без использования платформо-ориентированного метода нельзя. Читать

Отслеживание чтения данных из потока Java

Отслеживание чтения данных из потока JavaВ пакете swing содержится ProgressMonitorStream, который автоматически отображает диалоговое окно с информацией о том, какая часть данных была уже прочитана из потока.

Использовать данный фильтр чрезвычайно просто. Следует лишь поместить ProgressMonitorInputStream в состав последовательности используемых потоков.

Предположим, например, что вам требуется читать текст из файла. Формирование последовательности начинается с потока FileInputStream: Читать