Вступ до життєвого циклу теми на Java
Нитка переживає численні фази життєвого циклу. Такі, як, нитка приходить у світ, починається, пробігає і після цього проходить. Наступна схема пояснює повний життєвий цикл нитки.
- Конструктор ниток створює нитку через новий стан.
- Виклик методу start в Thread може зробити це через стан, який можна виконати.
- Планувальник ниток щодо Java запускає цей потік, коли процесор отримує.
- Коли потік перейде в заблокований стан, він знову запуститься, оскільки повертається до стану, який можна виконати.
- Якщо метод очікування позначається як потік перейде до очікування стану, він перейде до стану, який можна виконати незабаром після того, як він стане повідомленням у всій Інформі, а також метод сповіщення всіх.
- Після закінчення методу запуску нитка закінчується.
Що таке нитка?
Нитка визначається на рівні Операційної системи. І мова Java, як і всі інші мови, використовує, використовує послугу, яку надає Операційна система. З точки зору розробника, потік - це набір інструкцій, які ми збираємось написати нашу заявку та виконати певним чином. Сама програма може складатися з декількох потоків. Одночасно можуть виконуватися різні нитки. JVM (віртуальна машина Java) працює з декількома потоками. Існують нитки для збору сміття. Є нитки для компілятора Just in Time та інші технічні нитки.
Стани життєвого циклу теми на Яві
Нижче наведено різні стани життєвого циклу теми на Яві:
1. Нове: нова нитка починає їх життєвий цикл всередині нового стану. Він продовжує залишатися з цим станом до того, як програма починає нитку. Крім того, він відомий як створений потік.
2. Виконання: Після того, як нещодавно народилася нитка може початися, нитка перетворюється на розгорнуту. Нитка з цим станом вважається виконанням їх процесу.
3. Очікування: Іноді перехід потоку до стану очікування навколо, навіть якщо нитка чекає іншого потоку для виконання дії. Потік переходить, повертаючись у стан, який можна виконати, лише якщо додатковий потік вказує на очікування очікування, яке продовжує працювати.
4. Тимчасове очікування: Прогонована нитка може легко консервувати певний час, очікуючи, коли стан отримає певний інтервал часу. Потік із цим станом переходить, повертаючись у стан, який можна виконати, як тільки цей термін закінчується, або якщо подія, яку він справді чекає, станеться.
5. Припинено: Нитка, що може бути запущена, переходить у стан, що припиняється, оскільки вона виконує своє завдання, або припиняється.
Як створити тему на Java?
Найбільш основний спосіб створення потоку в Java - це використання Runnable Pattern. Спочатку потрібно створити екземпляр інтерфейсу Runnable, що дуже легко; існує лише один метод реалізації. Потім передаємо цей екземпляр конструктору класу Thread. І тоді ми просто називаємо метод start () створеного цього об’єкта потоку, щоб запустити новий потік, який збирається виконати завдання, загорнене в наш об’єкт Runnable.
Отже, спочатку ми створюємо екземпляр Runnable. Існує лише один метод реалізації, який називається методом run (). Це шаблон Java 7 для цього з екземпляром анонімного класу. Але ми також можемо використовувати лямбда-вираз для реалізації Runnable, оскільки в інтерфейсі Runnable існує лише один метод.
Створимо теми на дуже простих прикладах
Ми побачимо, що може піти не так із умовами перегонів, що з несинхронізованим кодом, який слід синхронізувати, і ми будемо виправляти наш код за допомогою синхронізації. Цей перший приклад дуже простий, він дуже базовий. Йдеться просто про створення завдання.
Вихід:
Завдання - це примірник інтерфейсу Runnable, назвемо його запущеним, і ми можемо реалізувати цей інтерфейс, використовуючи лямбда-вираз. Це завдання задається новій темі та виконується в контексті цього потоку. Тож ми просто збираємося роздрукувати ім’я теми, яка виконує це завдання. Я бігаю в… Thread.currentThread () - це статичний метод класу Thread, який повертає потік, що виконує поточне завдання. І нам просто потрібно викликати getName () на цьому об'єкті потоку, щоб повернути ім'я потоку. Потім після того, як ми створимо екземпляр Thread t = new Thread. Передача цього параметра, який можна виконати як параметр. Отже, цей потік виконує цю частину коду. І запустити його. t.start () це метод start (), який нам потрібно викликати. Ми також можемо зробити чітке ім’я цієї теми за допомогою t.setName ("Моя нитка"). І тепер ми можемо виконати цей код. Тепер замість методу call (() call) ми викликаємо метод run (), і якщо ми запустимо цей код, проблема полягає в тому, що завдання виконано правильно, але воно не виконується в створеній нами темі. Він виконується в основному потоці, який є потоком, що виконує основний метод. Тож цей метод run () не повинен називатися, якщо ми хочемо запустити новий потік.
Вихід:
Методи життєвого циклу теми на Java
Методи, описані просто Thread, представлені в табл.
Типи даних | Імена методу нитки |
Рядок |
getName () Повернути ім'я цієї теми |
int | отримати пріоритет ()
Повертає пріоритет потоку |
булева | живий()
Тести, якщо ця нитка все ще працює |
порожнеча | join ()
Чекає, коли ця нитка вмирає (припиняється) |
порожнеча | run ()
Щоразу, коли цей потік був побудований за допомогою індивідуального об'єкта Runnable, після якого зазвичай називається метод запуску об'єкта Runnable; інакше цей метод не поверне нічого. Кожного разу, коли клас потоку може бути розширений, а також метод run () перезавантажений під час підкласу, тоді називається метод overdden run (). |
порожнеча | setName ( назва рядка )
Змінення імені за допомогою цього потоку стане порівнянним з назвою аргументу. |
статична порожнеча | сон ( довгий міліс ) кидає Перерваний / Виняток Викликає поточну нитку для відпочинку необхідну кількість мілісекунд. |
статична порожнеча | сон ( довгий міліс, int nanos ) підкидає Перерванеприйняття
Це змушує поточну нитку спати (припиняє виконання) протягом необхідної кількості мілісекунд, а також певної кількості наносекунд. |
порожнеча | start ()
Запускає ці потоки для запуску виконання; віртуальна машина Java викликає метод запуску цього потоку. |
статична порожнеча | урожай ()
Запускає поточний об'єкт потоку на короткий час призупинити та дозволити виконання додаткових потоків. |
статична нитка | currentThread ()
Повертає згадку про поточно виконуваний об'єкт потоку. |
Висновок
- Простий для початку використання ниток, надзвичайно важко зрозуміти.
- Проектування класів, що містять методи, захищені від потоку, є складним завданням.
- Прочитайте: JavaDoc, щоб отримати клас java.lang.Thread
Рекомендована стаття
Це був посібник з життєвого циклу теми на Java. Тут ми обговорюємо, що таке нитка? і різні стани життєвого циклу ниток разом із створенням ниток в java. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -
- Рамки в Java
- Зоряні візерунки на Яві
- Об’єднання Сортування в Java
- Кращі компілятори Java
- Статичний метод в PHP