JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ ملٽي ٿريڊنگ

جاوا ۾ ملٽي ٿريڊنگ

گروپ ۾ شايع ٿيل

تعارف

جاوا سلسلي جي باري ۾ سکڻ کان اڳ، اچو ته ويجهي مستقبل ۾ ڏسو. تصور ڪريو ته توهان پنهنجو شروع ڪيو ۽ هڪ انٽرويو ڪيو. توهان ۽ ڪجهه درجن جي مستقبل جي ساٿين کي هڪ وڏي سافٽ ويئر ڪمپني ۾ ڪم ڪرڻ جي دعوت ڏني وئي آهي. ٻين مشڪلاتن جي وچ ۾، توهان کي ملازمت لاء ڪاغذ دستاويز جمع ڪرڻ جي ضرورت آهي هڪ ٿڪل HR ملازم کي.
جاوا ۾ ملٽي ٿريڊنگ - 1
عمل کي تيز ڪرڻ لاء، پوزيشن لاء درخواست ڪندڙ ٻن گروپن ۾ ورهائي سگھجن ٿيون ۽ ٻن HR مينيجرز جي وچ ۾ ورهائي سگهجن ٿيون (جيڪڏهن ڪو به ڪمپني ۾ هجي). نتيجي طور، اسان متوازي ڊيزائن جي ڪم جي ڪري عمل کي تيز ڪيو.
جاوا ۾ ملٽي ٿريڊنگ - 2
جيڪڏهن ڪمپني ۾ صرف هڪ عملدار آفيسر آهي، ته توهان کي ڪنهن به طرح ٻاهر نڪرڻو پوندو. مثال طور، توهان ٻيهر هر ڪنهن کي ٻن گروپن ۾ ورهائي سگهو ٿا، مثال طور، انٽرويو ڇوڪرين ۽ ڇوڪرن کي موڙ ۾.
جاوا ۾ ملٽي ٿريڊنگ - 3
يا ٻئي اصول موجب: جيئن ته هيٺين گروپ ۾ وڌيڪ ماڻهو آهن، اسان هڪ ڇوڪرو لاء ٻه ڇوڪريون متبادل ڪنداسين.
جاوا ۾ ملٽي ٿريڊنگ - 4
ڪم کي منظم ڪرڻ جي هن طريقي کي ملٽي-ٽيڊڊ سڏيو ويندو آهي . اسان جو ٿڪل HR آفيسر مختلف گروپن ۾ تبديل ڪري ٿو انھن مان ايندڙ ملازم کي ڀرتي ڪرڻ لاءِ. ٿي سگهي ٿو يارنهن گروپ، ۽ چار اهلڪار آفيسر. انهي صورت ۾، ملٽي ٿريڊنگ پروسيسنگ متوازي طور تي ڪيترن ئي HRs طرفان ٿيندي، جيڪي ڪنهن به گروهه مان ايندڙ شخص کي پنهنجي دستاويزن تي عمل ڪرڻ لاء وٺي سگهن ٿا.

عمل

هن معاملي ۾ عمل ( عمل ) دستاويز استقبال جي ڪم جي تنظيم ٿي ويندي. هڪ تنظيم ۾، ڪيترن ئي عملن ۾ فرق ڪري سگهجي ٿو: اڪائونٽنگ، سافٽ ويئر ڊولپمينٽ، گراهڪن سان ملاقاتون، گودام آپريشن، وغيره. هر عمل لاءِ وسيلا مختص ڪيا ويا آهن: احاطو، ملازمن کي ان جي عمل لاءِ. عمل هڪ ٻئي کان الڳ ٿيل آهن: HR آفيسرن وٽ اڪائونٽنگ ڊيٽابيس تائين رسائي نه آهي، ۽ ڪسٽمر سروس مينيجرز گودام جي چوڌاري نه هلندا آهن. جيڪڏهن هڪ عمل کي ڪنهن ٻئي جي وسيلن تائين رسائي حاصل ڪرڻ جي ضرورت آهي، اهو ضروري آهي ته بين الاقوامي عمل مواصلات قائم ڪرڻ: ميمو، گڏيل گڏجاڻيون.

وهڪرو

هڪ عمل ۾ ڪم ٿريڊز ۾ منظم ڪيو ويو آهي ( java thread). HR ڊپارٽمينٽ لاء، وهڪري هڪ گروپ جي خدمت ڪرڻ لاء ڪم جي تنظيم آهي. پهرين تصوير ۾ هڪ وهڪرو آهي، ايندڙ ٽن ۾ ٻه آهن. عمل جي اندر، موضوعن کي متوازي طور تي عمل ڪري سگهجي ٿو - ٻه HR آفيسر مستقبل جي ملازمن جي ٻن يا وڌيڪ گروپن کي قبول ڪن ٿا. عملدار آفيسرن جي گروپن سان رابطي - ھڪڙي عمل جي اندر سلسلي جي پروسيسنگ - کي ٿريڊ سنڪرونائيزيشن سڏيو ويندو آھي . ھڪڙي عملدار آفيسر پاران ٻن گروپن جي ٺاھڻ جي ڊرائنگ جا طريقا ڏيکاريا ويا آھن: يونيفارم (ڇوڪري - ڇوڪرو - ڇوڪرو) ۽ مختلف ترجيحن سان (ٻه ڇوڪريون ھڪڙي ڇوڪرو سان متبادل). موضوعن کي پروسيس جي وسيلن تائين رسائي آهي جنهن سان اهي تعلق رکن ٿا: گروپن کي HR آفيسر کي درخواست فارم جا نمونا، دستاويز ڀرڻ لاء قلم ڏنا ويا آهن. پر جيڪڏهن وهڪرا عام شين سان واسطو رکن ٿا ته پوءِ واقعا ممڪن آهن. جيڪڏهن پرسنل آفيسر توهان کان پڇي ته قطار ۾ موجود آخري ماڻهوءَ جو نالو ٻڌو ته پوءِ، ٻن گروهن جي صورت ۾، هن کي اڳ ۾ پڪ ناهي ته هو ڪنهن عورت جو نالو ٻڌندو يا مرد جو. اهڙي ڊيٽا تائين رسائي جي تڪرار، بلاڪ ۽ انهن کي حل ڪرڻ جا طريقا هڪ اهم موضوع آهن.

وهڪري جون حالتون

هر موضوع هيٺ ڏنل رياستن مان هڪ آهي:
  • ٺاهيل ( New) - HR آفيسر لاءِ لائن تيار ٿي رهي آهي، ماڻهو منظم ٿي رهيا آهن.
  • شروع ڪيو ويو ( Runnable) - اسان جي قطار HR آفيسر لاءِ قطار ۾ بيٺي آهي ۽ ان تي عمل ڪيو پيو وڃي.
  • بلاڪ ٿيل ( Blocked) - قطار ۾ موجود آخري ماڻهو نالو ڪڍڻ جي ڪوشش ڪري ٿو، پر جڏهن هن ٻڌو ته ايندڙ گروپ جي ڇوڪري هن جي اڳيان ائين ڪرڻ شروع ڪيو، هو خاموش ٿي ويو.
  • مڪمل ( Terminated) - پوري قطار HR آفيسر طرفان مڪمل ڪئي وئي آهي ۽ ان جي ڪا ضرورت ناهي.
  • انتظار ( Waiting) - هڪ قطار ٻئي کان سگنل جي انتظار ۾ آهي.
سلسلي جي تنظيم ۽ انهن جي وچ ۾ رابطي عمل جي مؤثر آپريشن جو بنياد آهي.

اچو ته آئي ٽي دنيا ڏانهن واپس وڃو

21 هين صدي ۾، گھڻن موضوعن ۽ متوازي عمل سان لاڳاپيل ٿي چڪي آهي. گذريل صديءَ جي 90 واري ڏهاڪي کان وٺي، گهڻا ڪم ڪندڙ آپريٽنگ سسٽم ونڊوز، ميڪ او ايس ۽ لينڪس مضبوط طور تي گهر جي ڪمپيوٽرن تي قائم ٿي چڪا آهن. توھان اڪثر انھن ۾ چار يا وڌيڪ ڪور پروسيسر ڳولي سگھو ٿا. GPU ويڊيو ڪارڊ جي متوازي بلاڪ جو تعداد اڳ ۾ ئي هڪ هزار کان وڌي چڪو آهي. مشهور پروگرام ملٽي ٿريڊنگ (ملٽي ٿريڊنگ) کي نظر ۾ رکندي لکيا ويندا آهن، مثال طور، گرافڪس، وڊيو پروسيسنگ لاءِ سافٽ ويئر جا جديد ورجن، يا وڏي مقدار ۾ ڊيٽا سان ڪم ڪرڻ: ايڊوب فوٽوشاپ، ون آرار، ميٿميٽيڪا، جديد رانديون. Java multithreading هڪ تمام اهم، مشهور ۽ پيچيده موضوع آهي. تنهن ڪري، JavaRush ڪورس ۾ ان کي چڱي طرح سمجهڻ لاء ڪيترائي ڪم آهن. جاوا جا مثال ملٽي ٿريڊنگ تي توهان کي هن علائقي جي بنيادي nuances ۽ subtleties کي ماهر ڪرڻ ۾ مدد ڏيندو، موضوع جي ڪم کي هم وقت سازي.

عمل

پروسيس هڪ پروگرام جو هڪ هلندڙ مثال آهي جنهن کي آپريٽنگ سسٽم (OS) مختص ڪيو آهي ميموري، پروسيسر وقت / ڪور، ۽ ٻيا وسيلا. اهو ضروري آهي ته ياداشت الڳ الڳ مختص ڪئي وئي آهي؛ مختلف عملن جي ايڊريس اسپيس هڪ ٻئي تائين رسائي لائق نه آهن. جيڪڏهن عملن کي گفتگو ڪرڻ جي ضرورت آهي، اهي فائلون، پائپس، ۽ ٻين باضابطه مواصلاتي طريقا استعمال ڪندي ائين ڪري سگهن ٿا.

وهڪري

جاوا Thread(اسٽريم). ڪڏهن ڪڏهن، ٻين جاوا طبقن سان مونجهاري کان بچڻ لاءِ Stream۽ جھڙوڪ، جاوا ٿريڊس کي اڪثر ٿريڊ طور ترجمو ڪيو ويندو آھي. اهي وسيلا استعمال ڪندا آهن هڪ عمل لاءِ مختص ڪيا ويا آهن ۽ طريقي سان عمل ڪيو ويندو آهي. مکيه موضوع طريقي سان عمل ڪري ٿو main۽ نڪرندو آهي. جڏهن هڪ عمل تي عمل ٿئي ٿو، اضافي موضوعن (ٻارن جي سلسلي) پيدا ڪري سگھجن ٿيون. ساڳئي عمل جا سلسلا هڪ ٻئي سان ڊيٽا مٽائي سگهن ٿا. جاوا ملٽي ٿريڊنگ کي ڊيٽا جي هم وقت سازي جي ضرورت آهي حساب ۾ رکڻ لاءِ، ان جي باري ۾ نه وساريو. جاوا ۾، هڪ عمل ختم ٿي ويندو آهي جڏهن ان جو آخري سلسلو ختم ٿي چڪو آهي. پس منظر جي ڪمن لاءِ، ھڪ ٿريڊ کي ڊيمن ( daemon) جي طور تي شروع ڪري سگھجي ٿو، عام ھڪڙي کان فرق اھو آھي ته انھن کي زبردستي ختم ڪيو ويندو جڏھن daemonعمل جا سڀ غير ٿريڊ ختم ٿي ويندا.

پهرين گھڻن موضوعن واري ايپليڪيشن

ٿريڊز ٺاهڻ جا اڌ درجن کان وڌيڪ طريقا آهن؛ جاوا رش جي ڪورس ۾ اسين انهن کي تفصيل سان جانچينداسين. سڀ کان پهريان، اچو ته بنيادي مان هڪ سان واقف ٿي. Threadطريقو ۾ ھڪڙو خاص ڪلاس آھي run()جنھن ۾ توھان کي ڪوڊ لکڻ جي ضرورت آھي جيڪو پروگرام جي منطق کي لاڳو ڪري ٿو. هڪ موضوع ٺاهڻ کان پوء، توهان ان کي ڪال ڪندي شروع ڪري سگهو ٿا start(). اچو ته هڪ ڊيمو پروگرام لکون جيڪو جاوا ملٽي ٿريڊنگ جو مثال لاڳو ڪري ٿو.
class PeopleQueue extends Thread    {// Наша очередь из сотрудников, наследник класса Thread
    private String[] names;

    PeopleQueue(String... names) {// Конструктор, аргумент- массив имен сотрудников
        this.names = names;
    }

    @Override
    public void run() { // Этот метод будет вызван при старте потока
        for (int i = 0; i < names.length; i++) { // Вывод в цикле с паузой 0.5 сек очередного сотрудника
            System.out.println("Обработаны documentы: " + names[i]);
            try {
                sleep(500); // Задержка в 0.5 сек
            } catch (Exception e) {}
        }
    }
}

public class HR    {// Класс для демонстрации работы потока
    public static void main(String[] args) {
        // Создаем две очереди
        PeopleQueue queue1 = new PeopleQueue("Ivan","Сергей","Николай","Фердинанд","Basil");
        PeopleQueue queue2 = new PeopleQueue("Мария","Людмила","Алиса","Карина","Olga");

        System.out.println("Начали!"); // Сообщение из главного потока программы
        queue1.start();    //Запускаем одну очередь (дочерний поток)
        queue2.start(); //Запускаем вторую (дочерний поток)
    }
}
اچو ته پروگرام شروع ڪريون. ڪنسول مکيه سلسلي مان پيغام جي پيداوار ڏيکاري ٿو. اڳيون، هر ٻار جو سلسلو موڙ queue1۾ ايندڙ پروسيس ٿيل ملازم بابت انهن جي عام ڪنسول ڏانهن پيغام موڪلي ٿو. queue2پروگرام لاء ممڪن اختيارن مان هڪ آهي:
Начали!
Обработаны documentы: Мария
Обработаны documentы: Ivan
Обработаны documentы: Людмила
Обработаны documentы: Сергей
Обработаны documentы: Алиса
Обработаны documentы: Николай
Обработаны documentы: Карина
Обработаны documentы: Фердинанд
Обработаны documentы: Ольга
Обработаны documentы: Васorй

Process finished with exit code 0
جاوا ۾ ملٽي ٽريڊنگ هڪ پيچيده ۽ گهڻ رخي موضوع آهي. متوازي، ملٽي ٽاسڪنگ ۽ ملٽي ٿريڊ ڪمپيوٽنگ استعمال ڪندي ڪوڊ لکڻ جي صلاحيت توهان کي جديد ملٽي ڪور پروسيسرز ۽ ڪيترن ئي ڪمپيوٽرن تي مشتمل ڪلسٽرز تي ڪم کي مؤثر طريقي سان لاڳو ڪرڻ ۾ مدد ڪندي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION