Разница между методом запуска и методом запуска в потоке
В потоке, если метод запуска вызывает метод запуска по очереди, почему мы решили вызывать метод запуска? Или в чем разница между вызовом метода начала и методом запуска в потоке Java? Эти два вопроса представляют собой два очень популярных вопроса о многопоточном интервью на уровне начинающих. Когда программист Java начнет изучать потоки, они сначала научатся наследовать класс потоков, перегружать метод запуска или реализовать интерфейс Runnable, реализовать метод выполнения, а затем вызовут метод запуска экземпляра потока. Но после того, как у него будет некоторый опыт, он обнаружит, что метод начала будет называть метод запуска внутри, рассматривая документацию по API или другие способы, но многие из нас знают, что, когда нас спрашивают во время собеседования, мы поймем важность этого вопроса. В этом учебном пособии Java мы поймем разницу между вызовом метода начала и методом запуска при запуске потоков в Java
Этот пост представляет собой постскриптум для некоторых из наших статей, опубликованных на Java MultiThreading, например, разница между Runnable и Thread в Java и как решить проблему потребителей производителя в Java с использованием BlockingQueue. Если вы еще не читали их, вы можете найти их интересными и полезными.
Разница между началом и запуска в ветке Java
Основное различие между методами начала и запуска заключается в том, что когда программа вызывает метод запуска, будет создан новый поток, и код в методе запуска будет запускаться в новом потоке. Тем не менее, когда вы напрямую вызовут метод запуска, программа не будет создавать новый поток, а код внутри метода запуска будет выполнять в текущем потоке. В большинстве случаев вызов метода запуска - это ошибка или ошибка. Поскольку исходное намерение вызывающего абонента состоит в том, чтобы вызвать метод запуска, чтобы запустить новый поток, эта ошибка может быть обнаружена многими статическими инструментами покрытия кода, такими как клетки для ног. Если вы хотите запустить задачу, которая занимает много времени, лучше всего использовать метод начала, в противном случае ваш основной поток будет застрял, когда вы вызовуте метод запуска. Другое отличие состоит в том, что после запуска потока вы не можете многократно вызывать метод начала объекта потока. Вызов метод начала потока, который уже начался
Ниже приведена демонстрация метода начала и метода запуска
Задача в потоке состоит в том, чтобы распечатать имя текущего потока, передаваемого в значении строки.
Здесь мы можем четко увидеть разницу между двумя
открытый класс diffbewteenstartandrun {public static void main (string args []) {System.out.println (thread.currentThread (). getName ()); // Создание двух потоков для начала и запуска метода вызова потока startThread = new Thread (New Task ("Start")); Thread runthread = new Thread (New Task ("run")); startthread.start (); // Вызов метод запуска потока - выполнит в // новый потоковый runthread.run (); // Вызов метод запуска потока - выполнить в // текущий поток}/ * * Простая реализация выполнения */ Приватный статический класс задача реализует runnable {private String Caller; Public Task (String Caller) {this.caller = caller; } @Override public void run () {System.out.println ("Caller:" + Caller + "и код в этом потоке выполняется:" + thread.currentThread (). GetName ()); }}}Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!