Во -первых, посмотрите на статус бега каждого этапа запуска Java Thread.
Поток - это объект в процессе и является основной единицей, которая самостоятельно запланирована и отправлена системой. Процесс с другими потоками, которые принадлежат к одному и тому же процессу. Один поток может создавать и отменять другой поток, и несколько потоков в одном и том же процессе могут быть выполнены одновременно. Из -за взаимных ограничений между потоками потоки кажутся прерывистыми во время работы.
В операционных системах, которые вводят потоки, процессы обычно используются в качестве основного блока для распределения ресурсов, а потоки используются в качестве основного устройства для независимой работы и независимого планирования. Поскольку потоки меньше процессов и в основном не имеют собственных системных ресурсов, накладные расходы на планирование будут намного меньше, что может более эффективно улучшить степень одновременного выполнения между несколькими программами в системе, тем самым значительно улучшив использование системных ресурсов и пропускную способность.
Потоки представляют собой единый последовательный процесс управления в программе. Запуск нескольких потоков одновременно в одной программе для выполнения различной работы, называемой многопоточной.
Многопользовательский состав в основном используется для сохранения времени процессора и его использования.
Многопользовательский состав предназначен для выполнения нескольких задач одновременно не для повышения эффективности работы, а для повышения эффективности использования ресурсов для повышения эффективности системы. Потоки реализованы, когда необходимо выполнить несколько задач одновременно.
В Java есть два способа реализации мультипотчика
1. Унаследовать класс потоков
2. Реализуйте запускаемый интерфейс
Каковы общие моменты этих двух методов:
Независимо от того, какой метод используется, вы должны использовать Thread (если это подкласс потока, использовать его сам) для генерации потока, а затем вызовать метод start ().
Различия между двумя методами:
1. Одним из недостатков класса наследственных потоков является единственное наследование, в то время как реализация запускаемого интерфейса компенсирует его недостатки, и может быть достигнуто множественное наследование.
2. Если вы наследуете класс потоков, если вы генерируете выполняемый объект экземпляра, вы должны генерировать несколько выполняемых объектов экземпляра, а затем использовать поток для генерации нескольких потоков; Этот класс, а затем используйте этот экземпляр. То есть обмен ресурсами реализуется
На основании двух вышеуказанных точек рекомендуется использовать второй метод
Ниже приведен пример иллюстрации
Программа 1:
Пакет Com.dr.runnable1; // Класс наследует класс потоков, этот класс является многопоточным классом. /Если использовать многопоточное, у вас должно быть тело метода public void run () {// распечатка для (int i = 0; i <10; i ++) {System.out.println (this.name+"--- -> run ,,,,, ");}}} открытый класс demo1 {public static void main (string args []) {// Первый метод, запущенный r1 = new Mythread (" Thread A "); Runnable R2 = New Mythread (Поток B »); ); Методы // mythread mt1 = new Mythread ("Thread a"); // mythread mt2 = new Mythread ("Thread B"); // mythread mt3 = new Mythread ("Thread C"); // mt1.start () ; // mt1.start (); // Поток может запустить только один раз // mt2.start (); // mt3.start ();Результаты работы программы:
Это наследует класс потоков, первый метод генерирует несколько выполняемых объектов экземпляра, а затем использует потоки для генерации нескольких потоков
Второй метод заключается в том, что, поскольку этот класс унаследовал класс потоков, он может напрямую использовать его для генерации нескольких потоков.
Программа 2:
Пакет com.dr.runnable1; класс mythread1 реализует runnable {private int ticket = 10; out .println ("Ticket ----->"+(this.ticket--)); ::::::::::::::::: ::::::::::::::::: ::::::::::::: (MT);Результаты запуска программы:
Эта программа реализует выполнение, генерирует класс объектов экземпляра, а затем использует поток для генерации нескольких потоков.