ძირითადი განსხვავება – Runnable vs Thread
შესრულებული პროგრამა ცნობილია როგორც პროცესი. პროცესი შეიძლება დაიყოს რამდენიმე ქვეპროცესად. მაგალითად, Microsoft Word არის პროცესი. ამავდროულად ამოწმებს ორთოგრაფიულ შეცდომას და გრამატიკას. ეს არის ქვეპროცესი. ეს ქვეპროცესები ცნობილია როგორც ძაფები. Multithreading არის რამდენიმე ძაფების ერთდროულად შესრულების პროცესი. ხრახნიანი აპლიკაციები შეიძლება შეიქმნას სხვადასხვა პროგრამირების ენების გამოყენებით. Runnable და Thread ასოცირდება Java პროგრამირებასთან. ჯავაში არის ორი მეთოდი, რომ შექმნათ თემა Runnable ინტერფეისის განხორციელებით ან Thread კლასის გაფართოებით. Runnable-ის დანერგვისას, ბევრ thread-ს შეუძლია ერთი და იგივე thread ობიექტის გაზიარება, ხოლო Extending Thread კლასში, თითოეულ thread-ს აქვს მასთან დაკავშირებული უნიკალური ობიექტი. ეს არის მთავარი განსხვავება Runnable-სა და Thread-ს შორის.
რა არის Runnable?
ძაფი გადის ზოგიერთ შტატში. "ახალი" არის ძაფის სასიცოცხლო ციკლის დასაწყისი. მას შემდეგ, რაც start() მეთოდი გამოიძახებს ახალ თემას, ის ხდება გაშვებადი. თუ ძაფების დამგეგმავი ირჩევს ძაფს, ის გადადის გაშვებულ მდგომარეობაში. თემა ელოდება მდგომარეობას, თუ ეს თემა ელოდება სხვა ძაფს დავალების შესასრულებლად. მას შემდეგ, რაც თემა დაასრულებს სამუშაოს, ის გადადის შეწყვეტის მდგომარეობაში.
თემა შეიძლება განხორციელდეს Runnable ინტერფეისის გამოყენებით. იხილეთ ქვემოთ მოცემული პროგრამა.
სურათი 01: ჯავის პროგრამა Runnable ინტერფეისის გამოყენებით თემის შესაქმნელად
ზემოხსენებული პროგრამის მიხედვით, კლასი Runnable Demo ახორციელებს Runnable ინტერფეისს. run() მეთოდი არის კლასში, რომელიც ახორციელებს Runnable ინტერფეისს. ეს არის ძაფის შესასვლელი წერტილი. ლოგიკა არის run() მეთოდში. მთავარ პროგრამაში, თემა იქმნება ობიექტის განსაზღვრით, რომელიც წარმოიშვა Runnable Demo კლასიდან. ეს არის t1. start() მეთოდი გამოიძახება t1.
მიმართეთ ქვემოთ მოცემულ პროგრამას.
სურათი 02: ჯავის პროგრამა, რომელიც ქმნის ძაფს ციკლის შესასრულებლად, Runnable ინტერფეისის განხორციელებით
ზემოხსენებული მაგალითის მიხედვით, კლასი Runnable Demo ახორციელებს Runnable ინტერფეისს. თემის გამოყენებით შესრულების ლოგიკა იწერება run() მეთოდში. მთავარ პროგრამაში, თემა იქმნება ობიექტის განსაზღვრით, რომელიც წარმოიშვა Runnable Demo კლასიდან.ეს არის t1. შემდეგ, start() მეთოდი გამოიძახება t1-ის გამოყენებით.
რა არის თემა?
თედის შექმნის სხვა მეთოდი არის Thread კლასის გაფართოება. იგი შედგება სამი ეტაპისგან. პირველი არის კლასის გამოცხადება Thread კლასის გაფართოებად. ამის შემდეგ უნდა დაიწეროს run() მეთოდი. მას აქვს ნაბიჯების თანმიმდევრობა, რომელიც უნდა შეასრულოს ძაფმა. საბოლოოდ იქმნება thread ობიექტი და გამოიძახება start() მეთოდი thread-ის შესრულების დასაწყებად. იხილეთ ქვემოთ მოცემული პროგრამა.
სურათი 03: Java პროგრამა, რომელიც აფართოებს Thread კლასს
ზემოხსენებული პროგრამის მიხედვით MyThread კლასი აფართოებს Thread კლასს. ის უგულებელყოფს გაშვების მეთოდს. run() მეთოდი შეიცავს ლოგიკას, რომელიც უნდა შესრულდეს ძაფით. ეს არის ძაფში შესვლის წერტილი.შემდეგ იქმნება ძაფის ობიექტი. ეს არის თემა 1. თემა იწყება start() მეთოდის გამოყენებით. ის შეასრულებს გამოძახებას run() მეთოდზე.
ორი კლასის პროგრამის მაგალითი, რომელიც აფართოებს Thread კლასს, შემდეგია.
სურათი 04: Java პროგრამა ორი კლასით, რომელიც აფართოებს Thread კლასს
ზემოხსენებული პროგრამის მიხედვით, A და B კლასი აგრძელებს Thread კლასს. ორივე კლასს აქვს run() მეთოდის დანერგვა. მთავარი თემა არის ის, რომელიც ასრულებს main() მეთოდს. სანამ მთავარი თემა კვდება, ის ქმნის და იწყებს thread1 და thread2. იმ დროისთვის, როდესაც ძირითადი ძაფი მიაღწია ძირითადი მეთოდის ბოლოს, სამი ძაფი გადის პარალელურად. არ არსებობს კონკრეტული თანმიმდევრობა, რომლითაც ძაფები იძლევა გამომავალს. თემის დაწყების შემდეგ ძნელია გადაწყვიტო, თუ რა შეკვეთას შეასრულებენ.ისინი დამოუკიდებლად დარბიან.
რა მსგავსებაა Runnable-სა და Thread-ს შორის?
ორივე იყენებს ჯავაში თემის შესაქმნელად
რა განსხვავებაა Runnable-სა და Thread-ს შორის?
Runnable vs Thread |
|
Runnable არის ინტერფეისი Java-ში, რათა შეიქმნას თემა, რომელიც საშუალებას აძლევს ბევრ ძაფს გააზიაროს ერთი და იგივე ნაკადის ობიექტი. | თედი არის კლასი Java-ში, რათა შეიქმნას თემა, სადაც თითოეულ ძაფს აქვს მასთან დაკავშირებული უნიკალური ობიექტი. |
მეხსიერება | |
Runnable-ში, მრავალი თემა იზიარებს ერთსა და იმავე ობიექტს, ამიტომ მოითხოვს ნაკლებ მეხსიერებას. | Thread კლასში, თითოეული თემა ქმნის უნიკალურ ობიექტს, ამიტომ მოითხოვს მეტ მეხსიერებას. |
გაფართოების უნარი | |
Runnable ინტერფეისის დანერგვის შემდეგ, მას შეუძლია გააფართოვოს კლასი. | მრავალჯერადი მემკვიდრეობა არ არის მხარდაჭერილი Java-ში. Thread კლასის გაფართოების შემდეგ, მას არ შეუძლია სხვა კლასის გაფართოება. |
კოდის შენარჩუნება | |
Runnable ინტერფეისი ხდის კოდს უფრო შენარჩუნებულს. | Thread კლასში შენარჩუნება შრომატევადია. |
შეჯამება – Runnable vs Thread
პროცესი იყოფა მრავალ ქვეპროცესად, რათა შეასრულოს რამდენიმე დავალება ერთდროულად. ეს ქვეპროცესები ცნობილია როგორც ძაფები. თემის ინსტალაცია შეიძლება განხორციელდეს Runnable ინტერფეისის დანერგვით ან Thread კლასის გაფართოებით. Thread კლასის გაფართოება ადვილია, მაგრამ ეს არ არის უკეთესი ობიექტზე ორიენტირებული პროგრამირების პრაქტიკა. Runnable-ის დანერგვისას, ბევრ thread-ს შეუძლია ერთი და იგივე thread ობიექტის გაზიარება, ხოლო Thread კლასში გაფართოებისას თითოეულ thread-ს აქვს მასთან დაკავშირებული უნიკალური ობიექტი. ეს არის განსხვავება Runnable-სა და Thread-ს შორის. Thread კლასში მრავალი ობიექტის შექმნა შეიძლება მეტ მეხსიერებას მოიხმარს.
ჩამოტვირთეთ Runnable vs Thread-ის PDF
შეგიძლიათ ჩამოტვირთოთ ამ სტატიის PDF ვერსია და გამოიყენოთ იგი ოფლაინ მიზნებისთვის ციტირების შენიშვნის მიხედვით. გთხოვთ გადმოწეროთ PDF ვერსია აქ სხვაობა Runnable-სა და Thread-ს შორის