Точка входа для приложений Java: main(), init() или run()?

До сих пор я использовал методы public void 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, см. в следующих источниках:


Метод 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-апплет.