Рубрики

Основной поток в Java

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

Основная тема

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

Свойства:

  • Это нить, из которой будут порождаться другие «дочерние» нити.
  • Часто это должен быть последний поток, завершивший выполнение, потому что он выполняет различные действия по завершению работы

Диаграмма потока :

Как контролировать основной поток

Основной поток создается автоматически при запуске нашей программы. Чтобы контролировать это, мы должны получить ссылку на него. Это можно сделать, вызвав метод currentThread (), который присутствует в классе Thread. Этот метод возвращает ссылку на поток, в котором он вызывается. Приоритет по умолчанию для основного потока равен 5, и для всех оставшихся пользовательских потоков приоритет будет наследоваться от родителя к потомку.

// Java-программа для управления основным потоком

public class Test extends Thread

{

    public static void main(String[] args)

    {

        // получаем ссылку на главный поток

        Thread t = Thread.currentThread();

          

        // получаем имя основного потока

        System.out.println("Current thread: " + t.getName());

          

        // меняем имя главного потока

        t.setName("Geeks");

        System.out.println("After name change: " + t.getName());

          

        // получение приоритета основного потока

        System.out.println("Main thread priority: "+ t.getPriority());

          

        // установка приоритета основного потока в MAX (10)

        t.setPriority(MAX_PRIORITY);

          

        System.out.println("Main thread new priority: "+ t.getPriority());

          

          

        for (int i = 0; i < 5; i++)

        {

            System.out.println("Main thread");

        }

          

        // Основной поток, создающий дочерний поток

        ChildThread ct = new ChildThread();

          

        // получение приоритета дочернего потока

        // который будет унаследован от основного потока

        // как оно создано Главным потоком

        System.out.println("Child thread priority: "+ ct.getPriority());

          

        // установка приоритета основного потока в MIN (1)

        ct.setPriority(MIN_PRIORITY);

          

        System.out.println("Child thread new priority: "+ ct.getPriority());

          

        // запуск дочернего потока

        ct.start();

    }

}

  
// дочерний поток

class ChildThread extends Thread

{

    @Override

    public void run() 

    {

        for (int i = 0; i < 5; i++)

        {

            System.out.println("Child thread");

        }

    }

}

Выход:

Current thread: main
After name change: Geeks
Main thread priority: 5
Main thread new priority: 10
Main thread
Main thread
Main thread
Main thread
Main thread
Child thread priority: 10
Child thread new priority: 1
Child thread
Child thread
Child thread
Child thread
Child thread

Связь между методом main () и основным потоком в Java

Для каждой программы главный поток создается JVM (виртуальной машиной Java). Поток «Main» сначала проверяет существование метода main (), а затем инициализирует класс. Обратите внимание, что из JDK 6 метод main () является обязательным в автономном Java-приложении.

Блокировка с использованием основной нити (только одна нить)

Мы можем создать тупик, просто используя основной поток, то есть, используя единственный поток. Следующая программа Java демонстрирует это.

// Java-программа для демонстрации тупика
// используя основной поток

public class Test 

{

    public static void main(String[] args)

    {

        try

        {

              

            System.out.println("Entering into Deadlock");

              

            Thread.currentThread().join();

              

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

            System.out.println("This statement will never execute");

              

        

          

        catch (InterruptedException e) 

        {

            e.printStackTrace();

        }

    }

}

Выход:

Entering into Deadlock

Пояснение:
Оператор «Thread.currentThread (). Join ()» скажет основному потоку дождаться смерти этого потока (то есть дождаться самого себя). Таким образом, главный поток ждет своей смерти, что является ничем иным, как тупиком.

Связанная статья: Потоки демона в Java .

Эта статья предоставлена Гауравом Миглани . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

Основной поток в Java

0.00 (0%) 0 votes