Spec-Zone .ru
спецификации, руководства, описания, API
|
Пакет | Описание |
---|---|
java.awt |
Содержит все классы для того, чтобы создать пользовательские интерфейсы и для рисования графики и изображений.
|
java.awt.image |
Обеспечивает классы для создания и изменения изображений.
|
java.lang |
Обеспечивает классы, которые являются основным принципом к проекту языка программирования Java.
|
java.lang.ref |
Обеспечивает ссылочные классы объектов, которые поддерживают ограниченный уровень взаимодействия со сборщиком "мусора".
|
java.nio.channels |
Определяет каналы, которые представляют соединения с объектами, которые способны к выполнению операций ввода-вывода, таковы как файлы и сокеты; определяет селекторы, для мультиплексированных, неблокирующих операций ввода-вывода.
|
java.nio.file |
Определяет интерфейсы и классы для виртуальной машины Java, чтобы получить доступ к файлам, атрибутам файла, и файловым системам.
|
java.util.concurrent |
Служебные классы, обычно полезные в параллельном программировании.
|
java.util.concurrent.locks |
Интерфейсы и классы, служащие основой для блокировки и ожидания условий, которое отлично от встроенной синхронизации и мониторов.
|
javax.swing |
Обеспечивает ряд "легкого веса" (язык все-Java) компоненты что, до максимального возможного градуса, работа то же самое на всех платформах.
|
Модификатор и Тип | Метод и Описание |
---|---|
AWTEvent |
EventQueue.getNextEvent()
Удаляет событие из
EventQueue и возвраты это. |
static void |
EventQueue.invokeAndWait(Runnable runnable)
|
void |
MediaTracker.waitForAll()
Начинает загружать все изображения, прослеженные этим средством отслеживания носителей.
|
boolean |
MediaTracker.waitForAll(long ms)
Начинает загружать все изображения, прослеженные этим средством отслеживания носителей.
|
void |
MediaTracker.waitForID(int id)
Начинает загружать все изображения, прослеженные этим средством отслеживания носителей с указанным идентификатором.
|
boolean |
MediaTracker.waitForID(int id, long ms)
Начинает загружать все изображения, прослеженные этим средством отслеживания носителей с указанным идентификатором.
|
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
PixelGrabber.grabPixels()
Запросите Изображение или ImageProducer начать поставить пиксели и ожидать всех пикселей в прямоугольнике интереса, который будет поставлен.
|
boolean |
PixelGrabber.grabPixels(long ms)
Запросите Изображение или ImageProducer начать поставить пиксели и ожидать всех пикселей в прямоугольнике интереса, который будет поставлен или пока указанный тайм-аут протек.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
Поток.join()
Ожидает этого потока, чтобы умереть.
|
void |
Поток.join(long millis)
Ожидает самое большее
millis миллисекунды для этого потока, чтобы умереть. |
void |
Поток.join(long millis, int nanos)
Ожидает самое большее
millis миллисекунды плюс nanos наносекунды для этого потока, чтобы умереть. |
static void |
Поток.sleep(long millis)
Заставляет в настоящий момент выполняющийся поток спать (временно прекращают выполнение) для конкретного количества миллисекунд согласно точности и точности системных таймеров и планировщиков.
|
static void |
Поток.sleep(long millis, int nanos)
Заставляет в настоящий момент выполняющийся поток спать (временно прекращают выполнение) для конкретного количества миллисекунд плюс конкретное количество наносекунд согласно точности и точности системных таймеров и планировщиков.
|
void |
Объект.wait()
Заставляет текущий поток ожидать, пока другой поток не вызывает
Object.notify() метод или Object.notifyAll() метод для этого объекта. |
void |
Объект.wait(long timeout)
Заставляет текущий поток ожидать, пока любой другой поток не вызывает
Object.notify() метод или Object.notifyAll() метод для этого объекта, или указанное количество времени протек. |
void |
Объект.wait(long timeout, int nanos)
Заставляет текущий поток ожидать, пока другой поток не вызывает
Object.notify() метод или Object.notifyAll() метод для этого объекта, или некоторый другой поток прерывает текущий поток, или определенное количество реального времени протекло. |
abstract int |
Процесс.waitFor()
Заставляет текущий поток ожидать, в случае необходимости, до процесса, представленного этим
Process объект завершился. |
Модификатор и Тип | Метод и Описание |
---|---|
Reference<? extends T> |
ReferenceQueue.remove()
Удаляет следующий ссылочный объект в этой очереди, блокируя, пока каждый не становится доступным.
|
Reference<? extends T> |
ReferenceQueue.remove(long timeout)
Удаляет следующий ссылочный объект в этой очереди, блокируя, пока или каждый не становится доступным или данный период тайм-аута, истекает.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract boolean |
AsynchronousChannelGroup.awaitTermination(long timeout, TimeUnit unit)
Ждет завершения группы.
|
Модификатор и Тип | Метод и Описание |
---|---|
WatchKey |
WatchService.poll(long timeout, TimeUnit unit)
Получает и удаляет следующий ключ часов, ожидая в случае необходимости до указанного времени ожидания, если ни один еще не присутствует.
|
WatchKey |
WatchService.take()
Получает и удаляет следующий ключ часов, ожидая, если ни один еще не присутствует.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
Семафор.acquire()
Получает разрешение от этого семафора, блокируя, пока каждый не доступен, или поток прерывается.
|
void |
Семафор.acquire(int permits)
Получает данное число разрешений от этого семафора, блокируя, пока все не доступны, или поток прерывается.
|
void |
CountDownLatch.await()
Заставляет текущий поток ожидать, пока фиксатор не считал в обратном порядке, чтобы обнулить, если поток не прерывается.
|
int |
CyclicBarrier.await()
Ожидает, пока все стороны не вызвали await на этот барьер.
|
boolean |
CountDownLatch.await(long timeout, TimeUnit unit)
Заставляет текущий поток ожидать, пока фиксатор не считал в обратном порядке, чтобы обнулить, если поток не прерывается, или указанное время ожидания протекает.
|
int |
CyclicBarrier.await(long timeout, TimeUnit unit)
Ожидает, пока все стороны не вызвали await на этот барьер, или указанное время ожидания протекает.
|
int |
Фазовращатель.awaitAdvanceInterruptibly(int phase)
Ждет фазы этого фазовращателя, чтобы совершенствоваться от данного фазового значения, бросая
InterruptedException если прервано, в то время как завершаются ожидание, или возврат сразу, если текущая фаза не равна данному фазовому значению или этому фазовращателю. |
int |
Фазовращатель.awaitAdvanceInterruptibly(int phase, long timeout, TimeUnit unit)
Ждет фазы этого фазовращателя, чтобы совершенствоваться от данного фазового значения или данного тайм-аута, чтобы протечь, бросая
InterruptedException если прервано, в то время как завершаются ожидание, или возврат сразу, если текущая фаза не равна данному фазовому значению или этому фазовращателю. |
boolean |
ForkJoinPool.awaitTermination(long timeout, TimeUnit unit)
Блоки до всех задач завершили выполнение после запроса завершения работы, или тайм-аут происходит, или текущий поток прерывается, какой бы ни происходит сначала.
|
boolean |
ExecutorService.awaitTermination(long timeout, TimeUnit unit)
Блоки до всех задач завершили выполнение после запроса завершения работы, или тайм-аут происходит, или текущий поток прерывается, какой бы ни происходит сначала.
|
boolean |
ThreadPoolExecutor.awaitTermination(long timeout, TimeUnit unit) |
boolean |
ForkJoinPool. ManagedBlocker.block()
Возможно блокирует текущий поток, например ожидающий блокировки или условия.
|
V |
Теплообменник.exchange(V x)
Ожидает другого потока, чтобы достигнуть этой точки обмена (если текущий поток не прерывается), и затем передает данный объект этому, получая его объект взамен.
|
V |
Теплообменник.exchange(V x, long timeout, TimeUnit unit)
Ожидает другого потока, чтобы достигнуть этой точки обмена (если текущий поток не прерывается, или указанное время ожидания протекает), и затем передает данный объект этому, получая его объект взамен.
|
V |
Будущее.get()
Ожидает в случае необходимости вычисления, чтобы завершиться, и затем получает его результат.
|
V |
ForkJoinTask.get()
Ожидает в случае необходимости вычисления, чтобы завершиться, и затем получает его результат.
|
V |
FutureTask.get() |
V |
Будущее.get(long timeout, TimeUnit unit)
Ожидает в случае необходимости в течение самое большее данного времени для вычисления, чтобы завершиться, и затем получает его результат, при наличии.
|
V |
ForkJoinTask.get(long timeout, TimeUnit unit)
Ожидает в случае необходимости в течение самое большее данного времени для вычисления, чтобы завершиться, и затем получает его результат, при наличии.
|
V |
FutureTask.get(long timeout, TimeUnit unit) |
<T> List<Future<T>> |
AbstractExecutorService.invokeAll(Collection<? extends Callable<T>> tasks) |
<T> List<Future<T>> |
ExecutorService.invokeAll(Collection<? extends Callable<T>> tasks)
Выполняет данные задачи, возвращая список Фьючерса, содержащего их состояние, и заканчивается, когда все завершаются.
|
<T> List<Future<T>> |
AbstractExecutorService.invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) |
<T> List<Future<T>> |
ExecutorService.invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
Выполняет данные задачи, возвращая список Фьючерса, содержащего их состояние, и заканчивается, когда все завершаются, или тайм-аут истекает, какой бы ни происходит сначала.
|
<T> T |
AbstractExecutorService.invokeAny(Collection<? extends Callable<T>> tasks) |
<T> T |
ExecutorService.invokeAny(Collection<? extends Callable<T>> tasks)
Выполняет данные задачи, возвращая результат того, который завершился успешно (то есть, не выдавая исключение), если кто-либо делает.
|
<T> T |
AbstractExecutorService.invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) |
<T> T |
ExecutorService.invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
Выполняет данные задачи, возвращая результат того, который завершился успешно (то есть, не выдавая исключение), если кто-либо делает прежде, чем данный тайм-аут протекает.
|
static void |
ForkJoinPool.managedBlock(ForkJoinPool.ManagedBlocker blocker)
Блоки в соответствии с данным блокировщиком.
|
boolean |
BlockingDeque.offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в очередь, представленную этой двухсторонней очередью (другими словами, в хвосте этой двухсторонней очереди), дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
boolean |
SynchronousQueue.offer(E o, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту очередь, ожидая в случае необходимости до указанного времени ожидания для другого потока, чтобы получить это.
|
boolean |
LinkedBlockingQueue.offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в хвосте этой очереди, ожидая в случае необходимости до указанного времени ожидания для пространства, чтобы стать доступным.
|
boolean |
ArrayBlockingQueue.offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в хвосте этой очереди, дожидаясь к указанному времени ожидания для пространства, чтобы стать доступным, если очередь полна.
|
boolean |
LinkedBlockingDeque.offer(E e, long timeout, TimeUnit unit) |
boolean |
BlockingQueue.offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту очередь, дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
boolean |
BlockingDeque.offerFirst(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент впереди этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
boolean |
LinkedBlockingDeque.offerFirst(E e, long timeout, TimeUnit unit) |
boolean |
BlockingDeque.offerLast(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в конце этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для пространства, чтобы стать доступным.
|
boolean |
LinkedBlockingDeque.offerLast(E e, long timeout, TimeUnit unit) |
E |
BlockingDeque.poll(long timeout, TimeUnit unit)
Получает и удаляет главу очереди, представленной этой двухсторонней очередью (другими словами, первый элемент этой двухсторонней очереди), дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
SynchronousQueue.poll(long timeout, TimeUnit unit)
Получает и удаляет главу этой очереди, ожидая в случае необходимости до указанного времени ожидания, для другого потока, чтобы вставить это.
|
E |
LinkedBlockingQueue.poll(long timeout, TimeUnit unit) |
E |
ArrayBlockingQueue.poll(long timeout, TimeUnit unit) |
E |
LinkedTransferQueue.poll(long timeout, TimeUnit unit) |
E |
LinkedBlockingDeque.poll(long timeout, TimeUnit unit) |
E |
PriorityBlockingQueue.poll(long timeout, TimeUnit unit) |
E |
DelayQueue.poll(long timeout, TimeUnit unit)
Получает и удаляет главу этой очереди, ожидая в случае необходимости, пока элемент с задержкой с истекшим сроком не доступен на этой очереди, или указанное время ожидания истекает.
|
Future<V> |
CompletionService.poll(long timeout, TimeUnit unit)
Получает и удаляет Будущее, представляющее следующую завершенную задачу, ожидая в случае необходимости до указанного времени ожидания, если ни один еще не присутствует.
|
Future<V> |
ExecutorCompletionService.poll(long timeout, TimeUnit unit) |
E |
BlockingQueue.poll(long timeout, TimeUnit unit)
Получает и удаляет главу этой очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
BlockingDeque.pollFirst(long timeout, TimeUnit unit)
Получает и удаляет первый элемент этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
LinkedBlockingDeque.pollFirst(long timeout, TimeUnit unit) |
E |
BlockingDeque.pollLast(long timeout, TimeUnit unit)
Получает и удаляет последний элемент этой двухсторонней очереди, дожидаясь к указанному времени ожидания в случае необходимости для элемента, чтобы стать доступным.
|
E |
LinkedBlockingDeque.pollLast(long timeout, TimeUnit unit) |
void |
BlockingDeque.put(E e)
Вставляет указанный элемент в очередь, представленную этой двухсторонней очередью (другими словами, в хвосте этой двухсторонней очереди), ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
SynchronousQueue.put(E o)
Добавляет указанный элемент к этой очереди, ожидая в случае необходимости другого потока, чтобы получить это.
|
void |
LinkedBlockingQueue.put(E e)
Вставляет указанный элемент в хвосте этой очереди, ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
ArrayBlockingQueue.put(E e)
Вставляет указанный элемент в хвосте этой очереди, ожидающей пространства, чтобы стать доступным, если очередь полна.
|
void |
LinkedBlockingDeque.put(E e) |
void |
BlockingQueue.put(E e)
Вставляет указанный элемент в эту очередь, ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
BlockingDeque.putFirst(E e)
Вставляет указанный элемент впереди этой двухсторонней очереди, ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
LinkedBlockingDeque.putFirst(E e) |
void |
BlockingDeque.putLast(E e)
Вставляет указанный элемент в конце этой двухсторонней очереди, ожидая в случае необходимости пространства, чтобы стать доступным.
|
void |
LinkedBlockingDeque.putLast(E e) |
void |
TimeUnit.sleep(long timeout)
Выполняет a
Thread.sleep использование этой единицы измерения времени. |
E |
BlockingDeque.take()
Получает и удаляет главу очереди, представленной этой двухсторонней очередью (другими словами, первый элемент этой двухсторонней очереди), ожидая в случае необходимости, пока элемент не становится доступным.
|
E |
SynchronousQueue.take()
Получает и удаляет главу этой очереди, ожидая в случае необходимости другого потока, чтобы вставить это.
|
E |
LinkedBlockingQueue.take() |
E |
ArrayBlockingQueue.take() |
E |
LinkedTransferQueue.take() |
E |
LinkedBlockingDeque.take() |
E |
PriorityBlockingQueue.take() |
E |
DelayQueue.take()
Получает и удаляет главу этой очереди, ожидая в случае необходимости, пока элемент с задержкой с истекшим сроком не доступен на этой очереди.
|
Future<V> |
CompletionService.take()
Получает и удаляет Будущее, представляющее следующую завершенную задачу, ожидая, если ни один еще не присутствует.
|
Future<V> |
ExecutorCompletionService.take() |
E |
BlockingQueue.take()
Получает и удаляет главу этой очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
E |
BlockingDeque.takeFirst()
Получает и удаляет первый элемент этой двухсторонней очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
E |
LinkedBlockingDeque.takeFirst() |
E |
BlockingDeque.takeLast()
Получает и удаляет последний элемент этой двухсторонней очереди, ожидая в случае необходимости, пока элемент не становится доступным.
|
E |
LinkedBlockingDeque.takeLast() |
void |
TimeUnit.timedJoin(Thread thread, long timeout)
Выполняет синхронизированное
Thread.join использование этой единицы измерения времени. |
void |
TimeUnit.timedWait(Object obj, long timeout)
Выполняет синхронизированное
Object.wait использование этой единицы измерения времени. |
void |
TransferQueue.transfer(E e)
Передает элемент потребителю, ожидая в случае необходимости, чтобы сделать так.
|
void |
LinkedTransferQueue.transfer(E e)
Передает элемент потребителю, ожидая в случае необходимости, чтобы сделать так.
|
boolean |
Семафор.tryAcquire(int permits, long timeout, TimeUnit unit)
Получает данное число разрешений от этого семафора, если все становятся доступными в пределах данного времени ожидания, и текущий поток не был прерван.
|
boolean |
Семафор.tryAcquire(long timeout, TimeUnit unit)
Получает разрешение от этого семафора, если Вы становитесь доступными в пределах данного времени ожидания, и текущий поток не был прерван.
|
boolean |
TransferQueue.tryTransfer(E e, long timeout, TimeUnit unit)
Передает элемент потребителю, если возможно сделать так прежде, чем тайм-аут протекает.
|
boolean |
LinkedTransferQueue.tryTransfer(E e, long timeout, TimeUnit unit)
Передает элемент потребителю, если возможно сделать так прежде, чем тайм-аут протекает.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
AbstractQueuedSynchronizer.acquireInterruptibly(int arg)
Получает в монопольном режиме, прерываясь если прервано.
|
void |
AbstractQueuedLongSynchronizer.acquireInterruptibly(long arg)
Получает в монопольном режиме, прерываясь если прервано.
|
void |
AbstractQueuedSynchronizer.acquireSharedInterruptibly(int arg)
Получает в совместно используемом режиме, прерываясь если прервано.
|
void |
AbstractQueuedLongSynchronizer.acquireSharedInterruptibly(long arg)
Получает в совместно используемом режиме, прерываясь если прервано.
|
void |
Условие.await()
Заставляет текущий поток ожидать, пока он не сообщается или прерывается.
|
void |
AbstractQueuedLongSynchronizer.ConditionObject.await()
Прерывистое условие реализаций ожидает.
|
void |
AbstractQueuedSynchronizer.ConditionObject.await()
Прерывистое условие реализаций ожидает.
|
boolean |
Условие.await(long time, TimeUnit unit)
Заставляет текущий поток ожидать, пока он не сообщается или прерывается, или указанное время ожидания протекает.
|
boolean |
AbstractQueuedLongSynchronizer.ConditionObject.await(long time, TimeUnit unit)
Синхронизированное условие реализаций ожидает.
|
boolean |
AbstractQueuedSynchronizer.ConditionObject.await(long time, TimeUnit unit)
Синхронизированное условие реализаций ожидает.
|
long |
Условие.awaitNanos(long nanosTimeout)
Заставляет текущий поток ожидать, пока он не сообщается или прерывается, или указанное время ожидания протекает.
|
long |
AbstractQueuedLongSynchronizer.ConditionObject.awaitNanos(long nanosTimeout)
Синхронизированное условие реализаций ожидает.
|
long |
AbstractQueuedSynchronizer.ConditionObject.awaitNanos(long nanosTimeout)
Синхронизированное условие реализаций ожидает.
|
boolean |
Условие.awaitUntil(Date deadline)
Заставляет текущий поток ожидать, пока он не сообщается или прерывается, или указанный крайний срок протекает.
|
boolean |
AbstractQueuedLongSynchronizer.ConditionObject.awaitUntil(Date deadline)
Реализации абсолютное синхронизированное условие ожидают.
|
boolean |
AbstractQueuedSynchronizer.ConditionObject.awaitUntil(Date deadline)
Реализации абсолютное синхронизированное условие ожидают.
|
void |
Блокировка.lockInterruptibly()
Получает блокировку, если текущий поток не прерывается.
|
void |
ReentrantLock.lockInterruptibly()
Получает блокировку, если текущий поток не прерывается.
|
void |
ReentrantReadWriteLock. ReadLock.lockInterruptibly()
Получает блокировку чтения, если текущий поток не прерывается.
|
void |
ReentrantReadWriteLock. WriteLock.lockInterruptibly()
Получает блокировку записи, если текущий поток не прерывается.
|
boolean |
AbstractQueuedSynchronizer.tryAcquireNanos(int arg, long nanosTimeout)
Попытки получить в монопольном режиме, прерываясь если прервано, и перестав работать, если данный тайм-аут протекает.
|
boolean |
AbstractQueuedLongSynchronizer.tryAcquireNanos(long arg, long nanosTimeout)
Попытки получить в монопольном режиме, прерываясь если прервано, и перестав работать, если данный тайм-аут протекает.
|
boolean |
AbstractQueuedSynchronizer.tryAcquireSharedNanos(int arg, long nanosTimeout)
Попытки получить в совместно используемом режиме, прерываясь если прервано, и перестав работать, если данный тайм-аут протекает.
|
boolean |
AbstractQueuedLongSynchronizer.tryAcquireSharedNanos(long arg, long nanosTimeout)
Попытки получить в совместно используемом режиме, прерываясь если прервано, и перестав работать, если данный тайм-аут протекает.
|
boolean |
Блокировка.tryLock(long time, TimeUnit unit)
Получает блокировку, если это свободно в пределах данного времени ожидания, и текущий поток не был прерван.
|
boolean |
ReentrantLock.tryLock(long timeout, TimeUnit unit)
Получает блокировку, если она не сохранена другим потоком в пределах данного времени ожидания, и текущий поток не был прерван.
|
boolean |
ReentrantReadWriteLock. ReadLock.tryLock(long timeout, TimeUnit unit)
Получает блокировку чтения, если блокировка записи не сохранена другим потоком в пределах данного времени ожидания, и текущий поток не был прерван.
|
boolean |
ReentrantReadWriteLock. WriteLock.tryLock(long timeout, TimeUnit unit)
Получает блокировку записи, если она не сохранена другим потоком в пределах данного времени ожидания, и текущий поток не был прерван.
|
Модификатор и Тип | Метод и Описание |
---|---|
T |
SwingWorker.get()
Ожидает в случае необходимости вычисления, чтобы завершиться, и затем получает его результат.
|
T |
SwingWorker.get(long timeout, TimeUnit unit)
Ожидает в случае необходимости в течение самое большее данного времени для вычисления, чтобы завершиться, и затем получает его результат, при наличии.
|
static void |
SwingUtilities.invokeAndWait(Runnable doRun)
Причины
doRun.run() выполняться синхронно на потоке диспетчеризации события AWT. |
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.