Java. Полное руководство. 8-е издание. С. Н. Тригуб Перевод с английского и редакция
Скачать 25.04 Mb.
|
pow (2.0, 3.0) вернет Возвращает ар г х 2 показатель Возвращает аргх.2 показатель Возвращает квадратный корень из ар г Ф ункции округления В классе M a t h определены некоторые методы, которые предназначены для выполнения различных операций округления. Они перечислены в табл. 16.20. Обратите внимание на два метода u l p () в конце таблицы. В данном контексте “ulp” означает “units in the last place” (единицы на последнем месте. Это указывает дистанцию между значением и ближайшим большим значением. Это можно использовать для получения точности результата. Таблица 16.20. Методы округления класса M a t h Метод Описание s t a t i c i n t a b s ( i n t ар г ) s t a t i c lo n g a b s ( lo n g a p r) s t a t i c f l o a t a b s (f l o a t a p r) s t a t i c do u b le a b s (d o u b le a p r ) s t a t i c d o u b le c e il ( d o u b le a p r ) s t a t i c do u b le f lo o r ( d o u b le a p r) s t a t i c i n t m a x (in t x , i n t y) s t a t i c long m ax(long x , long y) s t a t i c f l o a t m a x (f lo a t x , f l o a t y) s t a t i c d o u b le m ax(double x, do u b le y) s t a t i c i n t m in ( in t x , i n t y) s t a t i c long m in (lo n g x , long y) s t a t i c f l o a t m i n ( f l o a t x, f l o a t y) s t a t i c d o u ble m in (d o u b le x, d o u b le y) s t a t i c do u b le n e x tA f te r(d o u b le a p r , double нап равл) Возвращает абсолютное значение ар г Возвращает абсолютное значение ар г Возвращает абсолютное значение ар г Возвращает абсолютное значение ар г Возвращает наименьшее целое число, которое больше ар г Возвращает наибольшее целое число, которое меньше или равно ар г Возвращает большее из двух чисел хи у Возвращает большее из двух чисел хи у Возвращает большее из двух чисел хи у Возвращает большее из двух чисел хи у Возвращает меньшее из двух чисел хи у Возвращает меньшее из двух чисел хи у Возвращает меньшее из двух чисел хи у Возвращает меньшее из двух чисел хи у Начиная со значения ар г возвращает следующее значение в направлении направл. Если ар г -н ап равл, то возвращается н а прав л 4 5 Часть II. Библиотека Окончание табл. Метод ' < -«- ; v *; Описание 1;, / 7 „„it : J, static float n e x t A f t e r ( float a p r , double направл) static double nextUp(double apr) static float nextUp(float apr) static double rint(double apr) static int round(float apr) static long round(double apr) static float ulp(float apr) static double ulp(double Начиная со значения a p r возвращает следующее значение в направлении направл. Если арг-=направл, то возвращается направл Возвращает следующее значение в положительном направлении от арг Возвращает следующее значение в положительном направлении от арг Возвращает ближайшее целое карг Возвращает ар г, округленное вверх до ближайшего Возвращает ар г, округленное вверх до ближайшего Возвращает ulp для арг Возвращает ulp для арг Прочие методы класса M a t В дополнение к методам, приведенным в таблицах выше, в классе M a t h определено еще несколько методов, которые перечислены в табл. Таблица 16.21. Прочие методы класса M a t h ’ Описание - - . .> г * static double copySign(double a p r , double знака р г float c o p y S i g n ( float a p r , float знак ар г int getExponent(double a p r) static int g e t E x p o n e n t ( float a p r) static double IEEEremainder(double делимое делитель hypot(double сторона сторона o a t signum (double a p r ) static float signum(float a p Возвращает ар гс тем же знаком, что у знака р г Возвращает ар гс тем же знаком, что уз на карг Возвращает экспоненту по основанию 2, используемую для двоичного представления арг Возвращает экспоненту по основанию 2, используемую для двоичного представления арг Возвращает остаток отделения делимое делитель Возвращает длину гипотенузы прямоугольного треугольника по длине двух противоположных сторон Возвращает псевдослучайное число между 0 и Определяет знак значения. Возвращает 0, если ар г равен 0 , 1 — если ар г больше 0 и -1 — если ар г меньше Определяет знак значения. Возвращает 0, если ар г равен 0, 1 — если ар г больше 0 и -1 — если ар г меньше 0 Глава 16. Пакет java.lang 4 5 Окончание табл. Метод , X Описание ^ : ' - * ^ угол угол ) double toDegrees(double double Преобразует радианы в градусы. Угол, переданный параметром угол должен быть указан в радианах. Возвращается результат в градусах Преобразует градусы в радианы. Угол, переданный параметром угол должен быть указан в градусах. Возвращается результат в радианах В следующей программе демонстрируется использование методов toRadians () и toDegrees(). V Демонстрация применения toDegrees() и toRadians(). class Angles { public static void main(String a r g s []) { double theta = 12 0.0; System.out.println(theta + " градусов равно " + Math.toRadians(theta) + " радиан = 1.312; System.out.println(theta + " радиан равно " + M a t h .toDegrees(theta) + " градусов."); } Вывод этой программы показан ниже градусов равно 2.0943951023931953 радиан радиан равно 75.172 06272116401 радиан. Класс Этот класс определяет полный набор математических методов, аналогичный доступному в классе Math. Отличие в том, что версия класса StrictMath гарантирует точность, идентичную на всех реализациях языка Java, в то время как класс Math имеет большую свободу в целях достижения производительности. Класс Класс Compiler поддерживает создание окружений Java, в которых код виртуальной машины Java компилируется в исполняемый код вместо интерпретируемого. При нормальном программировании не используется. Классы Thread, ThreadGroup и интерфейс Интерфейса также классы Thread и ThreadGroup поддерживают многопоточное программирование. Они рассматриваются ниже. На заметку Краткий обзор технологий, используемых для работы с потоками, реализация интерфейса Runnable и создание многопоточных программ представлены в главе 11. 4 5 Часть II. Библиотека Интерфейс R u n n a b l Этот интерфейс должен быть реализован любым классом, который инициирует отдельный поток выполнения. Интерфейс определяет только один абстрактный метод по имени r u n ( ), который является точкой входа потока. Он определен следующим образом r u n (Потоки, которые вы создаете, должны реализовать этот метод. Класс T h r e a d создает новый поток выполнения. Он реализует интерфейс R u n n a b le и определяет следующие часто используемые конструкторы hre a d () Thread(Runnable объектПотока) Thread(Runnable объектПотока, String имяПотока) T hre a d (String имяПотока) Thread(ThreadGroup группаПотоков, Runnable объектПотока) Thread(ThreadGroup группаПотоков, Runnable объектПотока, String имяПотока) Thread(ThreadGroup группаПотоков, String имяПотока) Параметр объектПотока — это экземпляр класса, реализующего интерфейс R u n n a b le и определяющий, где начинается выполнение потока. Имя потока задается параметром имяПотока. Когда имя не указано, оно создается виртуальной машиной Java. Параметр группаПотоков определяет группу потоков, к которой новый поток будет относиться. Когда никакой группы не указано, новый поток относится к той же группе, что и родительский. В классе T h r e a d определены следующие константы: MAX_PRIORITY MIN_PRIORITY NORM_PRIORITY Как и можно было ожидать, эти константы определяют максимальный, минимальный и нормальный уровни приоритета потоков. Методы, определенные в классе T h r e a d , перечислены в табл. 16.22. В ранних версиях языка Java класс T h r e a d включал также методы s t o p (), s u s p e n d () и re s u m e (). Однако, как уже объяснялось в главе 11, они являются нежелательными, поскольку нестабильны. Также нежелательным есть метод c o u n t S ta c k F r a m e s ( ), поскольку он вызывает методы s u s p e n d () и d e s t r o y () и может привести к взаимной блокировке. Таблица 16.22. Методы, определенные в классе T h r e a Класс T h r e a d Метод Описание static int a c t i v e C o u n t (Возвращает примерное количество активных потоков в группе, к которой относится данный поток oid c h e c k A c c e s s (Принуждает диспетчер безопасности проверять, что текущий поток способен получать доступ к потоку и или изменять поток, в котором был вызван метод checkAccess () static Thread c u r r e n t T h r e a d (Возвращает объект класса Thread, который инкапсулирует поток, вызвавший этот метод void Отображает стек вызовов потока Глава 16. Пакет java.lang 4 5 Продолжение табл. Метод int enumerate(Thread го токи Thread. T JncaughtExcept ionHandler getDe- faultUncaughtExceptionHandler() Thread.UncaughtExceptionHandler ge t U n c a u g htExceptionHandler() long g e t l D O final String g e t N a m e () final int g e t P r i o r i t y () StackT r a c e E l e m e n t [] getStack- T r a c e () Thread.State getState() final ThreadGroup g e t T h r e a d G r o u p () static boolean holdsLock(Object объект i n t e r r u p t () static boolean i n t e r r u p t e d () final Boolean i s A l i v e () final Boolean i s D a e m o n O boolean i s l n t e r r u p t e d (Описание - Помещает копию объектов класса Thread из текущей группы потоков в массив потоки Возвращается количество потоков Возвращает объект интерфейса Мар, который содержит трассировку стека для всех активных потоков в группе. Каждый элемент карты состоит из ключа, который является объектом класса Thread, и его значения, которое представляет собой массив элементов класса Возвращает контекст загрузчика класса, используемый для загрузки классов и ресурсов для текущего потока Возвращает обработчик неперехваченных исключений по умолчанию Возвращает обработчик неперехваченных исключений данного потока Возвращает идентификатор вызывающего потока Возвращает имя потока Возвращает установки приоритета потока Возвращает массив, содержащий трассировку стека вызывающего потока Возвращает состояние вызывающего потока Возвращает объект класса ThreadGroup, членом которого является текущий поток Возвращает значение true, если вызывающий поток владеет блокировкой на объект объект В противном случае возвращает значение f a l s Прерывает поток Возвращает значение true, если вызывающий поток запланирован на прерывание. В противном случае возвращает значение false Возвращает значение true, если вызывающий поток еще активен. В противном случае возвращает значение Возвращает значение true, если вызывающий поток является потоком-демоном одним из потоков исполняющей системы Java). В противном случае возвращает значение Возвращает значение true, если вызывающий поток прерван. В противном случае возвращает значение false______________ 4 6 Часть II. Библиотека Окончание табл. 16.22 Метод; Описание final void join() throws InterruptedException final void j о i n (1ong миллисекунды) throws InterruptedException final void join(long миллисекунды, int наносекунды setDaemon(boolean состояние h r e a d . UncaughtExceptionHandler e) void setUncaughtExceptionHandler (T h r e a d .UncaughtExcept ionHandler e ) final void s e t N a m e (String имя Потока приоритет миллисекунды throws InterruptedException static void sleep(long миллисекунды наносекунды t r i n g () static void Ожидает завершения потока Ожидает до заданного количества миллисекунд завершения потока, в котором вызван метод Ожидает до заданного количества миллисекунд плюс наносекунд завершения потока, в котором метод вызван Начинает выполнение потока Устанавливает контекст загрузчика класса, который будет использован вызывающим объектом Помечает поток как поток-демон Устанавливает обработчик неперехвачен- ных прерываний по умолчанию Устанавливает обработчик неперехвачен- ных прерываний по умолчанию для вызывающего потока Устанавливает имя потока в имяП отока Устанавливает приоритет потока в приоритет Прерывает выполнение потока на заданное количество миллисекунд Прерывает выполнение потока на заданное количество миллисекунд плюс наносекунд Запускает выполнение потока Возвращает строковое представление по тока Вызывающий поток предлагает уступить ресурс центрального процессора другому потоку Класс T h r e a d G r o u Описываемый класс создает группу потоков. В классе T h re a d G ro u p определены следующие два конструктора имяГруппы) ThreadGroup(ThreadGroup родительскийОбъект , String имяГруппы ) Для обеих форм параметр имяГруппыуказывает имя группы потоков. Первая версия создает новую группу, родителем которой будет текущий поток. Во второй форме родитель группы задается параметром родит ельскийО бъект . Неустаревшие методы, определенные в классе T h re a d G ro u p , перечислены в табл. 16.23. Глава 16. Пакет java.lang 4 6 Таблица 16.23. Методы, определенные в классе T h r e a d G r o u т ^ Щ - g k 4 ? 4 ^ int a c t i v e C o u n t () int a c t i v e G r o u p C o u n t () final void c h e c k A c c e s s () final void d e s t r o y () int enumerate(Thread группа группа все enumerate(ThreadGroup группа [ ] ) int enumerate(ThreadGroup группа все isDaemonO boolean isDestroyed() void list () final boolean parentOf(ThreadGroup группа) Возвращает приблизительное количество активных потоков вызывающей группы (включая данную подгруппу) Возвращает приблизительное количество активных групп (включая данную подгруппу, для которых вызывающий поток является родителем Вынуждает диспетчер безопасности проверять, может ли вызывающий поток получить доступ к группе, для которой вызван метод c h e c k A c cess (), и или изменять ее Уничтожает группу потоков (и ее дочерние группы, для которой вызывался метод Помещает активные потоки, которые включены в вызывающую группу (включая таковые в подгруппе, в массив группа Помещает активные потоки, которые включены в вызывающую группу, в массив группа. Если параметр все содержит значение true, тов массив группа помещаются также все подгруппы потока Помещает активные подгруппы (включая подгруппы подгрупп и т.д.) вызывающей группы в массив группа Помещает активные подгруппы вызывающей группы в массив группа. Если параметр все содержит значение true, то все активные подгруппы всех подгрупп также помещаются в массив группа Возвращает максимальный приоритет, установленный для группы Возвращает имя группы Возвращает значение null, если вызывающий объект класса ThreadGroup не имеет родителя. В противном случае возвращается родитель вызывающего объекта Вызывает метод interrupt () для всех потоков в группе и любой подгруппе Возвращает значение true, если текущая группа является группой-демоном. В противном случае возвращается значение Возвращает значение true, если текущая группа ликвидирована. В противном случае возвращается значение Отображает информацию о группе. Возвращает значение true, если вызывающий поток является родителем группы (или самой группой. В противном случае возвращает значение 4 6 Часть II. Библиотека Окончание табл. 16.23 Метод Описание ^ , final void setDaemon(Boolean если Демон void setMaxPriority(int приоритет toSt r i n g () void uncaughtExcept i o n (Thread поток Если параметр если Демон содержит значение true, то вызывающая группа помечается как группа-демон Устанавливает максимальный приоритет для вызывающей группы равным приоритет Возвращает строковое представление группы Метод вызывается при передаче необработанного исключения Группы потоков предоставляют удобный способ управления группами потоков как одним целым. В частности, это важно в ситуациях, когда вы хотите приостановить или продолжить выполнение множества взаимосвязанных потоков. Например, предположим, что имеется программа, в которой один набор потоков используется для печати документов, другой — для отображения документа на экране, а еще один сохраняет документ в дисковом файле. Если печать прерывается, потребуется прервать все потоки, имеющие отношение к печати. Сказанное иллюстрируется в следующей программе, которая создает две группы процессов, по два процесса в каждой Демонстрация применения групп потоков NewThread extends Thread { |