До сих пор я использовал методы public void run() {}
для выполнения моего кода на Java. Когда/почему вы можете использовать main()
или init()
вместо run()
?
Точка входа для приложений Java: main(), init() или run()?
Ответ 1
Это особый вопрос, потому что он не должен быть вопросом выбора.
Когда вы запускаете JVM, вы указываете класс для запуска, и это main()
этого класса, где запускается ваша программа.
Под init()
, я предполагаю, что вы имеете в виду метод JApplet. Когда в браузере запускается апплет, метод init()
указанного апплета выполняется как первый порядок ведения бизнеса.
Под run()
, я предполагаю, что вы имеете в виду метод Runnable. Это метод, вызываемый при запуске нового потока.
- main: запуск программы
- init: запуск апплета
- run: запуск потока
Если Eclipse использует ваш метод run()
, хотя у вас нет main()
, он делает что-то своеобразное и нестандартное, но не неосуществимо. Возможно, вам следует опубликовать образец класса, который вы использовали таким образом.
Ответ 2
Метод main
является точкой входа приложения Java.
В частности, когда Java Virtual Machine предлагается запустить приложение, указав его класс (с помощью запуска приложения java
), он будет искать метод main
с сигнатурой public static void main(String[])
.
От Sun java
командная страница:
Инструмент java запускает приложение Java. Он делает это, начиная среду выполнения Java, загрузку указанного класса и вызов этого class main.
Метод должен быть объявлен открытым и статическим, он не должен возвращать значение, и он должен принимать массив
String
в качестве параметра. Метод объявление должно выглядеть следующим образом:public static void main(String args[])
Дополнительные ресурсы о том, как выполняется приложение Java, см. в следующих источниках:
- Глава 12: Выполнение из Спецификация языка Java, третье издание.
- Глава 5: Связывание, загрузка, инициализация из Виртуальная машина Java Спецификации, второе издание.
- Ближе Посмотрите приложение "Hello World" из Java Учебники.
Метод run
является точкой входа для нового Thread
или класса, реализующего Runnable
. Он не вызывается Java Virutal Machine, когда он запускается командой java
.
Поскольку сам Thread
или Runnable
не может запускаться непосредственно виртуальной машиной Java, поэтому он должен быть вызван методом Thread.start()
. Это может быть выполнено путем создания экземпляра Thread
и вызова его метода start
в методе main
приложения:
public class MyRunnable implements Runnable
{
public void run()
{
System.out.println("Hello World!");
}
public static void main(String[] args)
{
new Thread(new MyRunnable()).start();
}
}
Для получения дополнительной информации и примера запуска подкласса Thread
или реализации класса Runnable
см. Определение и запуск потока из учебных пособий Java.
Метод init
- это первый метод, называемый Applet или JApplet.
Когда апплет загружается плагином Java браузера или программой просмотра апплета, он сначала вызывает метод Applet.init
. Любые инициализации, необходимые для использования апплета, должны выполняться здесь. По завершении метода init
вызывается метод start
.
Подробнее о том, когда вызывается метод апплета init
, читайте о жизненном цикле апплета в Жизненный цикл апплета из учебных пособий Java.
Смотрите также: Как сделать апплеты из учебника Java.
Ответ 3
Java имеет специальный статический метод:
public static void main(String[] args) { ... }
который выполняется в классе при запуске класса с помощью командной строки java:
$ java Class
выполнит указанный метод в классе "класс", если он существует.
public void run() { ... }
требуется интерфейсом Runnable или унаследован от класса Thread при создании новых потоков.
Ответ 4
Метод main()
является точкой входа для приложения Java. run()
обычно используется для новых потоков или задач.
Где вы пишете метод run()
, какое приложение вы пишете (например, Swing, AWT, консоль и т.д.) и какова ваша среда разработки?
Ответ 5
как новичок, я импортирую пакеты acm, и в этом пакете run() начинает выполнение потока, init() инициализирует Java-апплет.