Рубрики
Без рубрики

Реализация потоковой передачи с помощью Java

В моем последнем посте мы рассмотрели, что такое поток и как он вписывается в рамки процесса. Теперь мы есть… С тегами java, учебник, информатика, для начинающих.

В моем последнем посте мы рассмотрели, что такое поток и как он вписывается в рамки процесса. Теперь мы обсудим два способа их реализации на Java, которые,

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

Начиная с работы в классе Thread, см. Приведенный ниже блок кода, взятый из w3schools .

public class Main extends Thread {
    public void run() {
        System.out.println("This code is running in a thread");
    }
}

Этот метод работает путем расширения класса Thread и переопределения его метода run () . Ниже приведен другой пример потоковой передачи с классами.

public class Main extends Thread {
    public static void main(String[] args) {
        Main thread = new Main();
        thread.start();
        System.out.println("This code is outside of the thread");
    }
    public void run() {
        System.out.println("This code is running in a thread");
    }
}

Далее у нас есть пример реализации управляемого интерфейса.

public class Main implements Runnable {
    public void run() {
        System.out.println("This code is running in a thread");
    }
}

Как и прежде, ниже приведен еще один более сложный пример использования классов.

public class Main implements Runnable {
    public static void main(String[] args) {
        Main obj = new Main();
        Thread thread = new Thread(obj);
        thread.start();
        System.out.println("This code is outside of the thread");
    }
    public void run() {
        System.out.println("This code is running in a thread");
    }
}

Теперь на этом этапе вы, вероятно, задаетесь вопросом, почему существует два способа реализации потоковой передачи в Java. Если вы помните с самого начала своего пути программирования, вы можете расширить только один класс на Java. Если вы расширяетесь из класса Thread, это означает, что вы упускаете преимущества наследования от других классов. Тем не менее, класс Thread имеет некоторые готовые полезные методы, которые могут упростить некоторые части вашего кода. Это вещи, которые вам нужно будет учитывать при выборе способа реализации потоковой передачи в вашем проекте.

Запускаемый и потоковый оба используют метод run. В этом методе вы кодируете функциональность потока. Когда вы хотите, чтобы поток начал выполняться, вы вызываете метод start для объекта.

Теперь, когда мы в курсе того, как создать поток, следующее, что нужно учитывать, – это параллелизм. Основное преимущество потоковой обработки заключается в том, что они одновременно выполняют легкие операции. Однако это тоже может быть плохо. Программист никогда не знает порядок выполнения потоков в процессе. Если приложение было настроено для нескольких потоков, например, для выполнения действий с переменной, невозможно узнать порядок операций, выполняемых с переменной. Как правило, лучше всего настроить потоки так, чтобы они использовали как можно меньше атрибутов. Однако в реальном мире это не всегда может быть достигнуто, поэтому существуют способы решения проблемы параллелизма и выполнения потокобезопасных действий.

Примером может служить использование функции IsAlive() в классе Thread.

public class Main extends Thread {
    public static int amount = 0;

    public static void main(String[] args) {
        Main thread = new Main();
        thread.start();
        // Wait for the thread to finish
        while(thread.isAlive()) {
            System.out.println("Waiting...");
        }
        // Update amount and print its value
        System.out.println("Main: " + amount);
        amount++;
        System.out.println("Main: " + amount);
    }
    public void run() {
        amount++;
    }
}

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

Ресурсы:

  1. Ресурсы:

  2. Ресурсы:

  3. Ресурсы:

  4. Ресурсы:

Оригинал: “https://dev.to/jryther/implementing-threading-with-java-2g50”