Для каждого типа данных в runtime можно получить объект типа class

Обновлено: 07.07.2024

Если этот метод вызывается после того, как виртуальная машина начала свою последовательность завершения работы тогда, если рычаги завершения работы будут выполнены, то этот метод блокирует неопределенно. Если рычаги завершения работы были уже выполнены, и завершение на выходе было включено тогда, этот метод останавливает виртуальную машину с данным кодом состояния, если состояние является ненулевым; иначе, это блокирует неопределенно.

System.exit метод является стандартными и удобными средствами вызова этого метода.

addShutdownHook

Регистрирует новый рычаг завершения работы виртуальной машины.

Виртуальная машина Java завершает работу в ответ на два вида событий:

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

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

Рычаги завершения работы должны также закончить свою работу быстро. Когда программа вызывает exit ожидание состоит в том, что виртуальная машина быстро завершит работу и выйдет. Когда виртуальная машина завершается из-за пользовательского выхода из системы или завершения работы системы, базовая операционная система может только позволить установленную сумму времени, в которое можно завершить работу и выйти. Это поэтому нецелесообразно, чтобы делать попытку любого взаимодействия с пользователем или выполнить продолжительное вычисление в рычаге завершения работы.

Непойманные исключения обрабатываются в рычагах завершения работы так же, как в любом другом потоке, вызывая uncaughtException метод потока ThreadGroup объект. Реализация по умолчанию этого метода печатает трассировку стека исключения к System.err и завершает поток; это не заставляет виртуальную машину выходить или останавливаться.

При редких обстоятельствах виртуальная машина может прерваться, то есть, прекратите работать, не завершая работу чисто. Это происходит, когда виртуальная машина завершается внешне, например с сигналом SIGKILL на Unix или запросе TerminateProcess к Microsoft Windows. Виртуальная машина может также прерваться, если собственный метод спутывается, например, повреждая внутренние структуры данных или пытаясь получить доступ к несуществующей памяти. Если виртуальная машина прерывается тогда, никакая гарантия не может быть сделана о том, будут ли какие-либо рычаги завершения работы выполнены.

removeShutdownHook

останов

Насильственно завершает в настоящий момент рабочую виртуальную машину Java. Этот метод никогда обычно не возвращается.

Этот метод должен использоваться с экстремальным предостережением. В отличие от этого exit метод, этот метод не заставляет рычаги завершения работы быть запущенными и не выполняет невызванные финализаторы, если завершение на выходе было включено. Если последовательность завершения работы уже инициировалась тогда, этот метод не ожидает никаких рабочих рычагов завершения работы или финализаторов, чтобы закончить их работу.

runFinalizersOnExit

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

Если есть менеджер безопасности, checkExit метод сначала вызывают с 0 как его параметр, чтобы гарантировать, что выход позволяется. Это могло привести к SecurityException.

Выполняет указанную строковую команду в отдельном процессе.

Это - метод удобства. Вызов формы exec(command) ведет себя точно таким же образом как вызов exec (command, null, null).

Выполняет указанную строковую команду в разделять процессе с указанной средой.

Это - метод удобства. Вызов формы exec(command, envp) ведет себя точно таким же образом как вызов exec (command, envp, null).

Выполняет указанную строковую команду в разделять процессе с указанной средой и рабочим каталогом.

Это - метод удобства. Вызов формы exec(command, envp, dir) ведет себя точно таким же образом как вызов exec (cmdarray, envp, dir), где cmdarray массив всех маркеров в command .

Более точно, command строка повреждается в маркеры, используя a StringTokenizer создаваемый вызовом new StringTokenizer (command) без дальнейшей модификации символьных категорий. Маркеры, произведенные токенизатором, тогда помещаются в новый строковый массив cmdarray , в том же самом порядке.

Выполняет указанную команду и параметры в отдельном процессе.

Это - метод удобства. Вызов формы exec(cmdarray) ведет себя точно таким же образом как вызов exec (cmdarray, null, null).

Выполняет указанную команду и параметры в разделять процессе с указанной средой.

Это - метод удобства. Вызов формы exec(cmdarray, envp) ведет себя точно таким же образом как вызов exec (cmdarray, envp, null).

Выполняет указанную команду и параметры в разделять процессе с указанной средой и рабочим каталогом.

Учитывая массив строк cmdarray , представление маркеров командной строки, и массива строк envp , представляя настройки переменной "среды", этот метод создает новый процесс, в котором можно выполнить указанную команду.

Этот метод проверяет это cmdarray допустимая команда операционной системы. То, какие команды допустимы, системно-зависимо, но по крайней мере команда должна быть непустым списком непустых строк.

Если envp является null, подпроцесс наследовал настройки среды текущего процесса.

Минимальный набор системно-зависимых переменных окружения может быть обязан запускать процесс на некоторых операционных системах. В результате подпроцесс может наследовать дополнительные настройки переменной окружения вне тех в указанной среде.

ProcessBuilder.start() теперь привилегированный способ запустить процесс с измененной среды.

Рабочий каталог нового подпроцесса определяется dir. Если dir является null, подпроцесс наследовал текущий рабочий каталог текущего процесса.

Если менеджер безопасности существует, checkExec метод вызывается с первым компонентом массива cmdarray как его параметр. Это может привести к a SecurityException быть брошенным.

  • Программный файл операционной системы не был найден.
  • Доступ к программному файлу был лишен.
  • Рабочий каталог не существует.

В таких случаях будет выдано исключение. Точный характер исключения системно-зависим, но это всегда будет подкласс IOException .

availableProcessors

Возвращает число процессоров, доступных виртуальной машине Java.

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

freeMemory

Возвращает количество свободной памяти в виртуальной машине Java. Вызов gc метод может привести к увеличению значения, возвращенного freeMemory.

totalMemory

Возвращает общую сумму памяти в виртуальной машине Java. Значение, возвращенное этим методом, может измениться в течение долгого времени, в зависимости от среды узла.

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

maxMemory

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

Имя gc стенды для "сборщика"мусора"". Виртуальная машина выполняет этот процесс рециркуляции автоматически как необходимый, в отдельном потоке, даже если gc метод не вызывается явно.

Метод System.gc() стандартные и удобные средства вызова этого метода.

runFinalization

Выполняет методы завершения любых объектов завершение на ожидании. Вызов этого метода предлагает, чтобы виртуальная машина Java израсходовала усилие к выполнению finalize методы объектов, которые, как находили, были отброшены, но чей finalize методы еще не были выполнены. Когда возвраты управления из вызова метода, виртуальная машина сделала максимальные усилия, чтобы завершить все выдающиеся завершения.

Виртуальная машина выполняет процесс завершения автоматически как необходимый, в отдельном потоке, если runFinalization метод не вызывается явно.

traceInstructions

Трассировка включений/Отключений инструкций. Если boolean параметр true , этот метод предлагает, чтобы виртуальная машина Java испустила отладочную информацию для каждой инструкции в виртуальной машине, поскольку это выполняется. Формат этой информации, и файл или другой поток вывода, к которому это испускается, зависит от среды узла. Виртуальная машина может проигнорировать этот запрос, если это не поддерживает эту функцию. Место назначения вывода трассировки системно-зависимо.

Если boolean параметр false , этот метод заставляет виртуальную машину прекращать выполнять подробную трассировку инструкции, которую это выполняет.

traceMethodCalls

Трассировка включений/Отключений вызовов метода. Если boolean параметр true , этот метод предлагает, чтобы виртуальная машина Java испустила отладочную информацию для каждого метода в виртуальной машине, как это вызывают. Формат этой информации, и файл или другой поток вывода, к которому это испускается, зависит от среды узла. Виртуальная машина может проигнорировать этот запрос, если это не поддерживает эту функцию.

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

загрузка

Загружает указанное имя файла как динамическую библиотеку. Параметром имени файла должно быть имя полного пути, (например Runtime.getRuntime().load("/home/avh/lib/libX11.so"); ).

Во-первых, если есть менеджер безопасности, checkLink метод вызывают с filename как его параметр. Это может привести к исключению безопасности.

Это подобно методу loadLibrary(String) , но это принимает общее имя файла как параметр, а не только имя библиотеки, позволяя любой файл собственного кода быть загруженным.

Метод System.load(String) стандартные и удобные средства вызова этого метода.

loadLibrary

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

Во-первых, если есть менеджер безопасности, checkLink метод вызывают с libname как его параметр. Это может привести к исключению безопасности.

Метод System.loadLibrary(String) стандартные и удобные средства вызова этого метода. Если собственные методы должны использоваться в реализации класса, стандартная стратегия состоит в том, чтобы поместить собственный код в файл библиотеки (вызовите это LibFile ) и затем помещать статический инициализатор:

в пределах объявления класса. Когда класс будет загружен и инициализируется, необходимая собственная реализация кода для собственных методов будет тогда загружена также.

Если этот метод вызывают не раз с тем же самым именем библиотеки, вторые и последующие вызовы игнорируются.

getLocalizedInputStream

Осуждаемый. С JDK 1.1, привилегированный способ преобразовать поток байтов в локальном кодировании в символьный поток в Unicode через InputStreamReader и BufferedReader классы. Создает локализованную версию входного потока. Этот метод берет InputStream и возвраты InputStream эквивалентный параметру во всех отношениях за исключением того, что это локализуется: поскольку символы в локальном наборе символов читаются из потока, они автоматически преобразовываются от локального набора символов до Unicode.

Если параметром уже является локализованный поток, он может быть возвращен как результат.

getLocalizedOutputStream

Осуждаемый. С JDK 1.1, привилегированный способ преобразовать поток символа Unicode в поток байтов в локальном кодировании через OutputStreamWriter , BufferedWriter , и PrintWriter классы. Создает локализованную версию потока вывода. Этот метод берет OutputStream и возвраты OutputStream эквивалентный параметру во всех отношениях за исключением того, что это локализуется: поскольку символы Unicode пишутся потоку, они автоматически преобразовываются в локальный набор символов.

Если параметром уже является локализованный поток, он может быть возвращен как результат.

  • Сводка:
  • Вложенный |
  • Поле |
  • Constr |
  • Деталь:
  • Поле |
  • Constr |

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE . Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.

В Java/| класс java.lang.Класс является точкой входа всех операций отражения . Как только у нас будет объект java.lang.Класс , затем мы можем вызвать соответствующие методы, чтобы получить объекты классов отражения.

В этом уроке мы обсудим различия между двумя различными способами получения объекта java.lang.Класс :

  • Вызов метода Object.getClass()
  • Использование синтаксиса .class

2. Краткое введение в два подхода

Метод Object.getClass() является методом экземпляра класса Object . Если у нас есть объект, мы можем вызвать object.getClass () , чтобы получить Класс объект его типа.

Аналогично, мы можем использовать ClassName.class синтаксис для получения класса объекта типа. Пример может объяснить это ясно:

В приведенном выше методе тестирования мы пытаемся получить объект Class класса String , используя два упомянутых нами способа. Наконец, метод утверждения говорит нам, что два объекта Class являются одним и тем же экземпляром.

Однако между этими двумя подходами существуют различия. Давайте рассмотрим их поближе.

3. Тип среды выполнения по сравнению с статический тип

Давайте быстро рассмотрим предыдущий пример. Когда мы вызываем метод str.getClass () , мы получаем тип времени выполнения объекта str . С другой стороны, String.class вычисляет String класс статически . В этом примере тип среды выполнения story и String.class одинаковы.

Однако они могут отличаться, если к партии присоединяется наследование классов. Давайте рассмотрим два простых класса:

Теперь давайте создадим экземпляр объекта класса Animal и проведем еще один тест:

Если мы запустим тест выше, мы получим сбой теста:

В тестовом методе, даже если мы создали экземпляр объекта animal с помощью Animal Monkey(); вместо Monkey Monkey(); , тип времени выполнения объекта animal по-прежнему Monkey. Это связано с тем, что объект animal является экземпляром Monkey во время выполнения.

Однако, когда мы получаем статический тип класса Animal , тип всегда Animal .

4. Обработка примитивных Типов

Когда мы пишем Java-код, мы довольно часто используем примитивные типы. Давайте попробуем получить Класс объект примитивного типа, используя подход object.getClass() :

Если мы попытаемся скомпилировать приведенный выше код, мы получим ошибку компиляции:

Компилятор не может разыменовать переменную number , поскольку она является примитивной переменной. Поэтому метод object.getClass() не может помочь нам получить Class объект примитивного типа.

Давайте посмотрим, сможем ли мы получить примитивный тип, используя синтаксис .class :

Таким образом, мы можем получить Класс объект типа int примитива через int.class . В Java версии 9 и более поздних версиях объект Class примитивного типа принадлежит модулю java.base .

5. Получение класса Без экземпляра

Мы узнали, что метод object.getClass() может дать нам объект Class своего типа времени выполнения.

Теперь давайте рассмотрим случай, когда мы хотим получить Класс объект типа, но мы не можем получить экземпляр целевого типа, потому что это абстрактный класс, интерфейс, или какой-то класс не позволяет создавать экземпляры:

В этих случаях мы не можем получить Class объекты этих типов с помощью метода object.getClass () , но мы все еще можем использовать синтаксис .class для получения Class объектов из них:

Как показывает приведенный выше тест, синтаксис .class может получить объекты Class для этих типов.

6. Заключение

В этой статье мы изучили два различных способа получения объекта типа Class : метод object.getClass() и синтаксис .class .

Позже мы обсудили разницу между этими двумя подходами. Следующая таблица может дать нам четкий обзор:

Каждое Java-приложение имеет один экземпляр класса Runtime, который позволяет приложению взаимодействовать со средой, в которой выполняется приложение. Текущее время выполнения может быть получено из метода getRuntime .

Методы Java Runtime class:

1) public static Runtime getRuntime (): этот метод возвращает экземпляр или объект Runtime, связанный с текущим приложением Java.

// Java-программа для иллюстрации getRuntime ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// получить текущее время выполнения, связанное с этим процессом

Runtime run = Runtime.getRuntime();

// выводим текущую свободную память для этой среды выполнения

2) public long freeMemory (): этот метод возвращает объем свободной памяти в JVM (виртуальная машина Java)

// Java-программа для иллюстрации freeMemory ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// выводим количество свободных байтов

3) public long totalMemory (): этот метод возвращает объем общего объема памяти в JVM (виртуальная машина Java)

// Java-программа для иллюстрации totalMemory ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// выводим количество байтов

4) открытый процесс exec (команда String) создает исключение IOException: этот метод выполняет данную команду в отдельном процессе.

Исключение:

1) SecurityException: Если менеджер безопасности существует и метод checkExec не позволяет создавать подпроцесс

2) IOException: если происходит ошибка ввода-вывода

3) NullPointerException: если команда пуста

4) IllegalArgumentException: если команда пуста

// Java-программа для иллюстрации процесса exec ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// создаем процесс и запускаем google-chrome

Process process = Runtime.getRuntime().exec( "google-chrome" );

System.out.println( "Google Chrome successfully started" );

catch (Exception e)

Примечание: замените любое программное обеспечение, которое вы хотите запустить. Я работаю на Linux и Google-Chrome написан только так. Может отличаться в Windows / Mac.

5) public void addShutdownHook (Thread Hook): этот метод регистрирует новый поток хука завершения работы виртуальной машины.

Исключение:

2) IllegalStateException: если виртуальная машина уже находится в процессе выключения

3) SecurityException: если менеджер безопасности отрицает RuntimePermission («shutdownHooks»)

// Java-программа для иллюстрации addShutdownHook ()
// метод класса Runtime

public class GFG

// класс, который расширяет поток, который должен быть вызван при выходе из программы

static class Message extends Thread

public void run()

System.out.println( "Program exiting" );

public static void main(String[] args)

Runtime.getRuntime().addShutdownHook( new Message());

// заставляем нить спать 3 секунды

System.out.println( "Waiting for 5 seconds. " );

catch (Exception e)

// Java-программа для иллюстрации removeShutdownHook ()
// метод класса Runtime

public class GFG

// класс, который расширяет поток, который должен быть вызван при выходе из программы

static class Message extends Thread

public void run()

System.out.println( "Program exiting" );

public static void main(String[] args)

Message p = new Message();

// заставляем нить спать 3 секунды

System.out.println( "Waiting for 5 seconds. " );

catch (Exception e)

7) публичное ИНТ availableProcessors (): Этот метод возвращает число процессоров , доступных для JVM (Java Virtual Machine).

// Java-программа для иллюстрации availableProcessors ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// проверяем количество доступных процессоров

8) public void exit (int status): этот метод завершает работающую в настоящее время виртуальную машину Java, инициируя ее последовательность завершения работы.

// Java-программа для иллюстрации exit ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// заставить программу выйти

// Теперь ничего не будет работать.

System.out.println( "Program Running Check" );

9) public void traceInstructions (boolean a): этот метод включает или отключает трассировку инструкций. Если логический аргумент равен true, то он предполагает, что JVM (виртуальная машина Java) выдает отладочную информацию для каждой инструкции в виртуальной машине при ее выполнении.

// Java-программа для иллюстрации traceInstructions ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// начать трассировку для инструкций

10) public void traceMethodCalls (boolean a): этот метод включает или отключает отслеживание вызовов методов. Если логический аргумент истинен, это предполагает, что виртуальная машина Java испускает отладочную информацию для каждого метода в виртуальной машине, как она вызывается.

// Java-программа для иллюстрации traceMethodCalls ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// начать трассировку для инструкций

11) public void loadLibrary (String libname): этот метод загружает динамическую библиотеку с указанным именем библиотеки. Файл, содержащий код, загружается из локальной системы из места, где обычно получают библиотечные файлы.

Исключение:

1) UnsatisfiedLinkError: если библиотека не существует.

2) NullPointerException: если libname равно нулю.

3) SecurityException: если метод checkLink не разрешает загрузку указанной динамической библиотеки.

// Java-программа для иллюстрации loadLibrary ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// загрузить библиотеку, которая является домашней / saket / папкой рабочего стола

System.out.println( "Library Loaded Successfully" );

12) public void load (String filename): этот метод загружает указанное имя файла в виде динамической библиотеки. Аргумент имени файла должен быть полным путем.

Исключение:

1) UnsatisfiedLinkError: если библиотека не существует.

2) NullPointerException: если Имя_библиотеки равно нулю.

3) SecurityException: если метод checkLink не разрешает загрузку указанной динамической библиотеки.

// Java-программа для иллюстрации load ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// загрузить библиотеку, которая является домашней / saket / папкой рабочего стола

System.out.println( "Library Loaded Successfully" );

13) public void gc (): этот метод запускает сборщик мусора. Вызов этого метода предполагает, что виртуальная машина Java затрачивает усилия на утилизацию неиспользуемых объектов, чтобы сделать доступной память, которую они занимают, для быстрого повторного использования.

// Java-программа для иллюстрации gc ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// запускаем сборщик мусора

14) public void runFinalization (): этот метод запускает методы финализации любых объектов, ожидающих финализации. Это предполагает, что HVM (виртуальная машина Java) затрачивает усилия на запуск методов финализации объектов, которые были обнаружены как отброшенные, но методы финализации которых еще не были запущены.

// Java-программа для иллюстрации runFinalization ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

15) public long maxMemory (): этот метод возвращает максимальный объем памяти, который виртуальная машина Java попытается использовать. Если нет внутреннего ограничения, то будет возвращено значение Long.MAX_VALUE.

// Java-программа для иллюстрации maxMemory ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// выводим максимальную память

16) public void halt (int status): этот метод принудительно завершает работающую в данный момент виртуальную машину Java. Этот метод никогда не возвращается нормально. Этот метод следует использовать с особой осторожностью.

Исключение:

SecurityException: если менеджер безопасности присутствует, и его метод checkExit не разрешает выход с указанным статусом

// Java-программа для иллюстрации halt ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// остановить этот процесс

// напечатать строку, просто чтобы увидеть, остановился ли процесс

System.out.println( "Process is still running." );

17) public Process exec (String [] cmd): этот метод выполняет указанную команду и аргументы в отдельном процессе. Это удобный метод.

Исключение:

1) IndexOutOfBoundsException: если cmd является пустым массивом (имеет длину 0)

2) NullPointerException: если libname равно нулю.

3) SecurityException: если метод checkLink не разрешает загрузку указанной динамической библиотеки.

4) IOException: если возникает ошибка ввода-вывода

// Java-программа для иллюстрации exec ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

String[] cmd = new String[ 2 ];

cmd[ 1 ] = "File.java" ;

// создаем процесс и выполняем cmdArray

Process process = Runtime.getRuntime().exec(cmd);

System.out.println( "File.java opening in atom" );

catch (Exception e)

18) public Process exec (String command, String [] envp, File dir): Этот метод выполняет указанную строковую команду в отдельном процессе с указанной средой и рабочим каталогом. Это удобный метод.

Исключение:

1) IndexOutOfBoundsException: если cmd является пустым массивом (имеет длину 0)

2) NullPointerException: если libname равно нулю.

3) SecurityException: если метод checkLink не допускает загрузку указанной библиотеки динамической.

4) IOException: если возникает ошибка ввода-вывода

// Java-программа для иллюстрации exec ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// создаем файл с желаемым рабочим каталогом

File f = new File( "/home/saket/Desktop" );

// создаем процесс и выполняем gedit и currect среду

Process process = Runtime.getRuntime().exec( "gedit" , null , f);

System.out.println( "Gedit opening." );

catch (Exception e)

19) public Process exec (String command, String [] envp): Этот метод выполняет указанную строковую команду в отдельном процессе с указанной средой. Это удобный метод, который ведет себя точно так же, как и вызов exec (command, envp, null).
Исключение:

1) IndexOutOfBoundsException: если cmd является пустым массивом (имеет длину 0)

2) NullPointerException: если libname равно нулю.

3) SecurityException: если метод checkLink не разрешает загрузку указанной динамической библиотеки.

4) IOException: если возникает ошибка ввода-вывода

// Java-программа для иллюстрации exec ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

// создаем файл с желаемым рабочим каталогом

File f = new File( "/home/saket/Desktop" );

// создаем процесс и выполняем gedit и currect среду

Process process = Runtime.getRuntime().exec( "gedit" , null );

System.out.println( "Gedit opening." );

catch (Exception e)

20) public Process exec (String [] cmdarray, String [] envp, File dir): этот метод выполняет указанную команду и аргументы в отдельном процессе с указанной средой и рабочим каталогом. При наличии массива строк cmdarray, представляющего токены командной строки, и массива строк envp, представляющих настройки переменных «environment», этот метод создает новый процесс, в котором нужно выполнить указанную команду.
Исключение:

1) IndexOutOfBoundsException: если cmd является пустым массивом (имеет длину 0)

2) NullPointerException: если libname равно нулю.

3) SecurityException: если метод checkLink не допускает загрузку указанной библиотеки динамической.

4) IOException: если возникает ошибка ввода-вывода

// Java-программа для иллюстрации exec ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

String[] cmd = new String[ 2 ];

cmd[ 1 ] = "File.java" ;

// создаем файл с желаемым рабочим каталогом

File dir = new File( "/home/saket/Desktop" );

// создаем процесс и выполняем cmdArray

Process process = Runtime.getRuntime().exec(cmd, null , dir);

System.out.println( "File.java opening." );

catch (Exception e)

21) public Process exec (String [] cmdarray, String [] envp): этот метод выполняет указанную команду и аргументы в отдельном процессе с указанной средой. Это удобный метод. Вызов формы exec (cmdarray, envp) ведет себя точно так же, как и вызов exec (cmdarray, envp, null).

Исключение:

1) IndexOutOfBoundsException: если cmd является пустым массивом (имеет длину 0)

2) NullPointerException: если libname равно нулю.

3) SecurityException: если метод checkLink не разрешает загрузку указанной динамической библиотеки.

4) IOException: если возникает ошибка ввода-вывода

// Java-программа для иллюстрации exec ()
// метод класса Runtime

public class GFG

public static void main(String[] args)

String[] cmd = new String[ 2 ];

cmd[ 1 ] = "File.java" ;

// создаем файл с желаемым рабочим каталогом

File dir = new File( "/home/saket/Desktop" );

// создаем процесс и выполняем cmdArray

Process process = Runtime.getRuntime().exec(cmd, null );

System.out.println( "File.java opening." );

catch (Exception e)

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Каждому приложению Java сопоставляется экземпляр класса Runtime.

class java.lang. Runtime ¶ getRuntime ( ) ¶

Возвращает соответсвующий приложению Runtime

exit ( int status ) ¶

Осуществляет завершение программы с кодом завершения status (при использовании этого метода особое внимание нужно уделить обработке исключений - выход будет осуществлен моментально, и в конструкциях try-catch-finally управление в finally передано не будет)

public native void

Сигнализирует сборщику мусора о необходимости запуска

public native long

Возвращает количество свободной памяти. В некоторых случаях это количество может быть увеличено, если вызвать у объекта Runtime метод gc()

public native long

Возвращает суммарное количество памяти, выделенное Java машине. Это количество может из изменяться даже в течении одного запуска, что зависит от реализации платформы на которой запущена Java машина. Так-же, не стоит закладываться на объем памяти, занимаемой одним определенным объектом - эта величина так же зависит от реализации Java машины.

loadLibrary ( String libname ) ¶

Загружает библиотеку с указанным именем. Обычно загрузка библиотек производится следующим образом: в классе, использующем native реализации методов, добавляется статический инициализатор, например:

Таким образом, когда класс будет загружен и инициализирован, необходимый код для реализации native методов так-же будет загружен. Если будет произведено несколько вызовов загрузки библиотеки с одним и тем-же именем - произведен будет только первый, а все остальные будут проигнорированы.

load ( String filename ) ¶

Подгружает файл с указанным названием в качестве библиотеки. В принципе, этот метод работает так-же как и метод load(), только принимает в качестве параметра именно название файла, а не библиотеки, тем самым позволяя загрузить любой файл с native кодом.

Производит запуск выполнения методов finalize() у всех объектов, этого ожидающих

Читайте также: