Многопоточность в Java

Опубликовано: 15 Февраля, 2022

Многопоточность - это функция Java, которая позволяет одновременное выполнение двух или более частей программы для максимального использования ЦП. Каждая часть такой программы называется потоком. Итак, потоки - это легковесные процессы внутри процесса.

Потоки можно создавать с помощью двух механизмов:

  1. Расширение класса Thread
  2. Реализация исполняемого интерфейса

Thread creation by extending the Thread class
We create a class that extends the java.lang.Thread class. This class overrides the run() method available in the Thread class. A thread begins its life inside run() method. We create an object of our new class and call start() method to start the execution of a thread. Start() invokes the run() method on the Thread object.

Java

// Java code for thread creation by extending
// the Thread class
class MultithreadingDemo extends Thread {
    public void run()
    {
        try {
            // Displaying the thread that is running
            System.out.println(
                "Thread " + Thread.currentThread().getId()
                + " is running");
        }
        catch (Exception e) {
            // Throwing an exception
            System.out.println("Exception is caught");
        }
    }
}
 
// Main Class
public class Multithread {
    public static void main(String[] args)
    {
        int n = 8; // Number of threads
        for (int i = 0; i < n; i++) {
            MultithreadingDemo object
                = new MultithreadingDemo();
            object.start();
        }
    }
}
Output
Thread 15 is running
Thread 14 is running
Thread 16 is running
Thread 12 is running
Thread 11 is running
Thread 13 is running
Thread 18 is running
Thread 17 is running

Создание потока путем реализации Runnable Interface
Мы создаем новый класс, который реализует интерфейс java.lang.Runnable и переопределяет метод run (). Затем мы создаем экземпляр объекта Thread и вызываем метод start () для этого объекта.

Класс потока против исполняемого интерфейса

  1. Если мы расширим класс Thread, наш класс не сможет расширять какой-либо другой класс, потому что Java не поддерживает множественное наследование. Но если мы реализуем интерфейс Runnable, наш класс по-прежнему сможет расширять другие базовые классы.
  2. Мы можем достичь базовой функциональности потока, расширив класс Thread, потому что он предоставляет некоторые встроенные методы, такие как yield (), interrupt () и т. Д., Которые недоступны в интерфейсе Runnable.
  3. Использование runnable даст вам объект, который можно использовать в нескольких потоках.

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

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .