Runnable va Thread o'rtasidagi farq

Mundarija:

Runnable va Thread o'rtasidagi farq
Runnable va Thread o'rtasidagi farq

Video: Runnable va Thread o'rtasidagi farq

Video: Runnable va Thread o'rtasidagi farq
Video: Java Multithreading : AtomicReference, ScheduledExecutorService и монада Either. Многопоточность. 2024, Noyabr
Anonim

Asosiy farq – Ishlash mumkin va mavzu

Ijro etilayotgan dastur jarayon deb nomlanadi. Jarayonni bir nechta kichik jarayonlarga bo'lish mumkin. Masalan, Microsoft Word - bu jarayon. Shu bilan birga, imlo xatosi va grammatikani tekshiradi. Bu pastki jarayon. Ushbu kichik jarayonlar iplar deb nomlanadi. Multithreading - bu bir vaqtning o'zida bir nechta iplarni bajarish jarayoni. Tishli ilovalar turli dasturlash tillari yordamida tuzilishi mumkin. Runnable va Thread Java dasturlash bilan bog'langan. Java-da Runnable interfeysini qo'llash yoki Thread sinfini kengaytirish orqali ip yaratishning ikkita usuli mavjud. Runnable dasturini amalga oshirishda ko'p iplar bir xil mavzu ob'ektini bo'lishishi mumkin, Extending Thread sinfida esa har bir ip u bilan bog'langan noyob ob'ektga ega. Bu Runnable va Thread o'rtasidagi asosiy farq.

Runnable nima?

Mavzu ba'zi holatlardan o'tadi. "Yangi" - bu ipning hayot aylanishining boshlanishi. start() usuli yangi ish zarrachasini chaqirgandan so'ng, u ishga tushadi. Agar ipni rejalashtiruvchi ipni tanlasa, u ishlayotgan holatga o'tadi. Agar ip vazifani bajarish uchun boshqa ish zarrachasini kutayotgan bo'lsa, ip holatni kutmoqda. Tarmoq ishni tugatgandan so'ng, u tugatish holatiga o'tadi.

Tripni Runnable interfeysi yordamida amalga oshirish mumkin. Quyidagi dasturga qarang.

Runnable va Thread o'rtasidagi farq
Runnable va Thread o'rtasidagi farq

01-rasm: Runnable interfeysi yordamida ip yaratish uchun Java dasturi

Yuqoridagi dasturga muvofiq, Runnable Demo klassi Runnable interfeysini amalga oshiradi. run() usuli Runnable interfeysini amalga oshiradigan sinf ichida joylashgan. Bu ip uchun kirish nuqtasi. Mantiq run() usulida. Asosiy dasturda ip Runnable Demo sinfidan yaratilgan ob'ektni aniqlash orqali yaratiladi. Bu t1. start() usuli t1 yordamida chaqiriladi.

Quyidagi dasturga qarang.

Runnable va Thread_Figure o'rtasidagi farq 02
Runnable va Thread_Figure o'rtasidagi farq 02

02-rasm: Runnable interfeysini amalga oshirish orqali tsiklni bajarish uchun ip yaratish uchun Java dasturi

Yuqoridagi misolga ko'ra, Runnable Demo klassi Runnable interfeysini amalga oshiradi. Tarmoq yordamida bajarish mantiqi run() usulida yozilgan. Asosiy dasturda ip Runnable Demo sinfidan yaratilgan ob'ektni aniqlash orqali yaratiladi. Bu t1. Keyin start() usuli t1 yordamida chaqiriladi.

Mavzu nima?

Tread yaratishning yana bir usuli bu Thread sinfini kengaytirishdir. U uch bosqichdan iborat. Birinchisi, sinfni Thread sinfini kengaytiruvchi deb e'lon qilishdir. Shundan so'ng, run() usuli yozilishi kerak. Unda ip bajarilishi kerak bo'lgan qadamlar ketma-ketligi mavjud. Nihoyat, ip ob'ekti yaratiladi va ipning bajarilishini boshlash uchun start() usuli chaqiriladi. Quyidagi dasturga qarang.

Runnable va Thread_Figure o'rtasidagi farq 03
Runnable va Thread_Figure o'rtasidagi farq 03

03-rasm: Thread sinfini kengaytiruvchi Java dasturi

Yuqoridagi dasturga muvofiq MyThread klassi Thread sinfini kengaytiradi. U ishga tushirish usulini bekor qiladi. run() usuli ip tomonidan bajariladigan mantiqni o'z ichiga oladi. Bu ipga kirish nuqtasi. Keyin ip ob'ekti yaratiladi. Bu ip 1. Tarmoq start() usuli yordamida boshlanadi. U run() usuliga qo‘ng‘iroqni amalga oshiradi.

Tread sinfini kengaytiruvchi ikkita sinf dasturining namunasi quyidagicha.

Runnable va Thread o'rtasidagi asosiy farq
Runnable va Thread o'rtasidagi asosiy farq

04-rasm: Thread sinfini kengaytiruvchi ikkita sinfga ega Java dasturi

Yuqoridagi dasturga muvofiq, A va B sinflari Thread sinfini kengaytirmoqda. Ikkala sinfda ham run() usuli mavjud. Asosiy ip - bu main() usulini bajaradi. Asosiy ip o'lishidan oldin, u thread1 va thread2 ni yaratadi va ishga tushiradi. Asosiy ip asosiy usulning oxiriga yetganda, uchta ip parallel ravishda ishlaydi. Iplar chiqadigan aniq tartib yo'q. Mavzu boshlangandan so'ng, ular bajarish tartibini hal qilish qiyin. Ular mustaqil ishlaydi.

Runnable va Thread oʻrtasidagi oʻxshashliklar qanday?

Ikkalasi ham Java-da mavzu yaratish uchun foydalanmoqda

Runnable va Thread o'rtasidagi farq nima?

Runnable vs Thread

Runnable – Java-da koʻplab mavzularga bir xil mavzu obyektini almashish imkonini beruvchi ip yaratish uchun interfeys. Mavzu Java-dagi sinfdir, unda har bir mavzu u bilan bog'langan noyob ob'ektga ega bo'lgan ip yaratish uchun mo'ljallangan.
Xotira
Runnable-da bir nechta mavzular bir xil ob'ektni ulashadi, shuning uchun kamroq xotira talab qilinadi. Thread sinfida har bir ip noyob ob'ekt yaratadi, shuning uchun ko'proq xotira talab qilinadi.
Imkoniyatni kengaytirish
Runnable interfeysi oʻrnatilgandan soʻng u sinfni kengaytirishi mumkin. Java-da bir nechta meros qo'llab-quvvatlanmaydi. Thread sinfini kengaytirgandan so'ng, u boshqa sinfni kengaytira olmaydi.
Kodni saqlash imkoniyati
Runnable interfeys kodni yanada barqaror qiladi. Tread sinfida parvarishlash ko'p vaqt talab etadi.

Xulosa – Ishlash mumkin va mavzu

Bir vaqtning oʻzida bir nechta vazifani bajarish uchun jarayon bir nechta kichik jarayonlarga boʻlingan. Ushbu kichik jarayonlar iplar deb nomlanadi. Ish zarralarini yaratish Runnable interfeysini qo'llash yoki Thread sinfini kengaytirish orqali amalga oshirilishi mumkin. Thread sinfini kengaytirish oson, lekin bu yaxshi ob'ektga yo'n altirilgan dasturlash amaliyoti emas. Runnable dasturini amalga oshirishda ko'p iplar bir xil mavzu ob'ektini bo'lishishi mumkin, Thread sinfini kengaytirishda har bir ip u bilan bog'langan noyob ob'ektga ega. Bu Runnable va Thread o'rtasidagi farq. Thread sinfida bir nechta obyekt yaratish koʻproq xotirani isteʼmol qilishi mumkin.

Runnable vs Threadning PDF-faylini yuklab oling

Siz ushbu maqolaning PDF-versiyasini yuklab olishingiz va iqtibos keltirgan holda oflayn maqsadlarda foydalanishingiz mumkin. Iltimos, PDF versiyasini bu yerdan yuklab oling Runnable va Thread o'rtasidagi farq

Tavsiya: