Потоки позволяют программе выполнять несколько задач одновременно.
Жизненный цикл потока
- Новый
- Runnable
- Running
- Non-Runnable (Заблокировано)
- Завершено
Жизненный цикл потока:
-
Новое: поток находится в новом состоянии, когда вы создаете экземпляр класса потока. Он остается в этом состоянии до вызова метода
start ()
. -
Runnable: Поток находится в рабочем состоянии после вызова метода
start ()
, но этот поток не запланирован планировщиком. -
Выполняется: поток переводится в состояние выполнения, как только планировщик потоков выбирает его.
-
Не запускается: в этом состоянии поток активен, но не работает.
-
Завершено: Поток находится в завершенном или мертвом состоянии, когда его метод
run ()
завершается.
Как создавать потоки
Существует два метода создания потоков:
-
Использование класса Thread
-
Использование исполняемого интерфейса
Thread
Class
i) Создать класс потока:
открытый класс Myclass расширяет поток
ii) Переопределить run ()
метод:
public void run ( );
iii) Создайте объект класса:
MyThread obj = new MyThread ();
iv) Вызов метода start ()
:
obj.start ();
class MyThread расширяет поток {public void run () {System.out.println ("Поток выполняется ..."); } public static void main (String args []) {MyThread obj = new MyThread (); obj.start (); }}
Использование исполняемого интерфейса:
i) Создайте класс потока:
открытый класс MyThread реализует Runnable
ii) Переопределите метод run ()
:
public void run ();
Примечание : мы можем также используйте
@override
для переопределенияrun()
.
iii) Создайте объект класса:
Тема t = новая тема (new MyThread ());
Примечание : мы используем
new
дважды, потому что классMyThread
не расширяет класс потока. Мы также можем написать то же самое:
Runnable r = new MyThread (); Thread t = new Thread (r);
iv) Вызов метода start ():
t.start ();
Примечание : мы используем исполняемый интерфейс, потому что, если класс уже является дочерним по отношению к своему родительскому классу, он не может расширять класс потока. Следовательно, он может реализовать исполняемый интерфейс.
класс MyThread реализует Runnable {public void run () {System.out.println ("Thread is running ..."); } public static void main (String args []) {MyThread r = new MyThread (); Тема t = новая тема (r); t.start (); }}
Сходства между классом потока и исполняемым интерфейсом:
- Они создают уникальный объект класса.
- Они должны переопределить метод
run ()