Я узнал, как закончить (выключить или остановить) мои Java-программы. Я нашел для него два решения.
- используя return;
Когда я хочу завершить или прекратить выполнение моей программы, я добавляю это. - используя System.exit(); Иногда я использовал его. Я прочитал о Sytem.exit() из Этот вопрос.
Итак, я знаю немного о них обоих. Но я все еще смущен тем, как они на самом деле работают. Пожалуйста, проверьте коды ниже.
public class Testing < public static void main(String. str) < System.out.println(1); System.exit(0); System.out.println(2); return; >>
Я уверен, что 2 не появится. Я хотел бы знать, почему return; или другие коды могут писать ниже утверждение System.exit(0); и что было реальным определением для return; (потому что для меня это странно для меня return без каких-либо переменных или значений)?
7 ответов
48 Решение Aleks G [2014-03-17 14:25:00]
Вызов System.exit(0) (или любое другое значение в этом случае) приводит к тому, что виртуальная машина Java завершает работу, завершая текущий процесс. Параметр, который вы передадите, будет возвращаемым значением, которое процесс java вернется в операционную систему. Вы можете выполнить этот вызов из любой точки вашей программы — и результат всегда будет таким же — JVM завершается. Поскольку это просто вызов статического метода в классе System , компилятор не знает, что он будет делать — и, следовательно, не жалуется на недостижимый код.
Java. Многопоточность. Остановка потока. Обработка InterruptedException.
return просто отменяет выполнение текущего метода. Это буквально означает возврат элемента управления вызывающему методу. Если метод объявлен как void (как в вашем примере), вам не нужно указывать значение, так как вам нужно вернуть void . Если метод объявлен для возврата определенного типа, тогда вы должны указать возвращаемое значение — и это значение должно быть указанного типа.
return приведет к выходу программы только в том случае, если она находится внутри метода main основного класса. Если вы попытаетесь поместить код после него, компилятор будет жаловаться на недостижимый код, например:
public static void main(String. str)
не будет компилироваться с большинством компиляторов, создавая ошибку unreachable code , указывающую на второй вызов System.out.println .
Потому что System.exit() — это еще один метод для компилятора. Он не читает заранее и не выясняет, что вся программа завершится в этот момент (JVM завершает работу). Ваша ОС или оболочка могут читать целое число, которое передается обратно в методе System.exit() . Стандартно для 0 означает «завершение программы, и все прошло нормально» и любое другое значение для уведомления об ошибке. Разработчик должен документировать эти возвращаемые значения для любых пользователей.
return С другой стороны, это зарезервированное ключевое слово, которое компилятор хорошо знает. return возвращает значение и завершает текущий запуск функции, перемещая резервную копию стека к функции, которая его вызывала (если таковая имеется). В приведенном выше коде возвращается void , поскольку вы не предоставили ничего для возврата.
Уроки Java для начинающих #3 | Компиляция программы
5 Karura91 [2014-03-17 14:24:00]
System.exit() завершает работу JVM. Ничего не происходит после выполнения System.exit(). Возврат обычно используется для выхода из метода. Если тип возврата недействителен, вы можете использовать return; Но я не думаю, что это хорошая практика сделать это в основном методе. Вам не нужно ничего делать для завершения программы, если не будет бесконечный цикл или какое-то странное другое выполнение.
4 prady00 [2014-03-17 14:25:00]
Источник: qarchive.ru
Как остановить выполнение Java-программы из командной строки?
Моя основная сфера деятельности — .Net, но в последнее время я как-то занялся Java. Мне нужно создать утилиту оболочки на Java, которая могла бы работать в фоновом режиме, читая несколько записей базы данных по истечении указанного времени, и выполнять дальнейшую обработку. Это своего рода планировщик. Теперь у меня мало забот:
Как заставить это работать как услугу. Я хочу выполнить его через сценарий оболочки, и утилита должна запуститься. Конечно, управление должно вернуться к вызывающему скрипту.
Во-вторых, в конце концов я могу захотеть остановить этот процесс. Как этого добиться?
Я понимаю, что это основной вопрос, но я действительно понятия не имею, с чего начать и какие варианты лучше всего подходят для меня.
Любая помощь / совет, пожалуйста?
задан 10 июн ’10, 08:06
5 ответы
Я бы пошел на запуск программы с помощью планировщика или службы. Однако, если вы хотите использовать bat-файл и делать это программно, я изложил возможный подход ниже:
В вашей программе Java вы можете получить PID программно, а затем записать его в файл:
Затем вы можете написать стоп-файл .bat, который убьет запущенную программу в Windows. Вы можете сделать что-то вроде:
setlocal IF EXIST app.pid FOR /F %%i in (‘type app.pid’) do TASKKILL /F /PID %%i IF EXIST app.pid DEL app.pid endlocal
Конечно, app.pid — это файл, написанный указанным выше методом Java.
Я не уверен, как вы могли бы написать сценарий, который запускает Java-программу и возвращает управление при завершении. Мне было бы интересно узнать, есть ли у кого-нибудь решение для этого.
Источник: stackovergo.com
Как я могу остановить/запустить приложение Java из командной строки?
у меня есть Java-приложение, которое я запускаю из командной строки с помощью .bat файл, содержимое выглядит следующим образом:
cls rem Starting app set CLASSPATH=.;.lib title App1 starting java app/StartMe
затем запуска и вывода на печать в окне команд. Если я хочу, чтобы остановить приложение, которое я должен Control + C и типа Y . Это довольно раздражает, так как я хочу, чтобы начать / остановить в цикле, и я в настоящее время должны сделать это вручную
как я могу ввести паузу в 30 секунд, а затем остановить Java-приложения?
Я пробовал добавление exit /B к приведенному выше сценарию, но это, похоже, ничего не делает, что я могу сделать, чтобы добавить wait/sleep, а затем остановить процесс Java?
задан Sathya
29.03.2023 3:04 2930
1 ответ
грубый способ-это ping localhost и перенаправить вывод в NUL для подавления вывода.
ping localhost -n 31 >NUL
вам также нужно будет изменить свой скрипт:
cls rem Starting app set CLASSPATH=.;.lib title App1 starting start java app/StartMe ping localhost -n 31 >NUL taskkill /F /IM java.exe
так что этот сценарий запустит ваше приложение java, подождите 30 секунд и убейте процесс java
отвечен Sathya 2023-03-30 10:52
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]
Ваш ответ
Опубликуйте как Гость или авторизуйтесь
Опубликовать ответ
Похожие вопросы про тегам:
- Запуск ярлыка с помощью пакетного файла
- Загрузить папку с cURL и FTP с помощью пакетного файла на Windows?
- Объединение каталогов без конфликтов перезаписи
command-line
- Как использовать команду NET SEND из Windows 7 в Windows XP?
- Arch Linux pacman ошибка при загрузке общих библиотек на Raspberry Pi
- Простой калькулятор командной строки [закрыт]
- Автологина 2 пользователей Windows или логин другого пользователя с рабочего стола
- Dell Studio 1555 обновление до ssd, но компакт-диск не работает
- Windows 7 может спать, но не может переходить в спящий режим
Недавние вопросы
- 7 Какое максимальное количество разделов можно создать на жестком диске?
- 3 Таблица прилипает к верхней части страницы, как ее удалить?
- 6 При двусторонней печати как исправить, что задняя страница печатается вверх ногами?
- 4 Как превратить оглавление в простой форматированный текст?
- 5 Что значит 1Rx8 и 2Rx8 для оперативной памяти и совместимы ли они?
- 10 Копирование и вставка в Windows PowerShell
- 13 Сочетание клавиш для сворачивания удаленного рабочего стола
- 1 Как включить фон рабочего стола на удаленном компьютере?
- 5 Как сделать ярлык на рабочем столе доступным для всех пользователей в Windows 10
- 1 Зачем Windows 10 нужна служба очереди сообщений и почему она установлена по умолчанию?
Недавние публикации
Наушники Wireless и True Wireless: чем они отличаются?
Не включается iPad: причины и решения проблемы
Как ускорить передачу данных по Bluetooth
Как правильно приобрести подержанный iPhone?
Каковы преимущества фотоэлектрической системы?
5 лучших USB–пылесосов для клавиатуры
Как выбрать чехол-аккумулятор для смартфона
Мобильный телефон Razr: новая складная раскладушка от Motorola стоит 1200 евро
Компания Nothing: смартфон Phone 2 должен быть «более премиальным» и выйти в этом году
UMTS — История технологии сотовой связи
Выбор домена
3D-печать: будущее массового производства
Искусственный интеллект в малом бизнесе: как улучшить эффективность и конкурентоспособность
Ошибки, которых стоит избегать при продвижении сайта
Высокие технологии в Windows: что это такое и как их использовать в своих приложениях
- Сварочные столы от производителя
- Личный помощник по дому: облегчение бытовых забот
Акции IT-компаний [10.06]
Apple | $173,24 | +0,81% | ![]() |
Amazon | $114,49 | -1,94% | ![]() |
Microsoft | $325,19 | +3,61% | ![]() |
$123,44 | +2,11% | ![]() |
|
Netflix | $364,74 | -0,03% | ![]() |
Intel | $27,45 | -5,34% | ![]() |
$254,49 | +2,11% | ![]() |
|
Tesla | $185,54 | +1,44% | ![]() |
Tencent | $322,40 | -3,01% | ![]() |
Цитата дня
Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия.
- Какое максимальное количество разделов можно создать на жестком диске?
- Таблица прилипает к верхней части страницы, как ее удалить?
- При двусторонней печати как исправить, что задняя страница печатается вверх ногами?
- Как превратить оглавление в простой форматированный текст?
Источник: kompsekret.ru