জাভা প্রোগ্রামিং ভাষা খুব দক্ষতার সাথে কাজ করে যে অ্যাপ্লিকেশনগুলির জন্য টাস্কগুলি একই থ্রেডে একই সাথে সম্পাদন করা প্রয়োজন। কোনও অ্যাপ্লিকেশনের পক্ষে একই সাথে প্রচুর সংখ্যক থ্রেড চালানো কঠিন হয়ে পড়ে। সুতরাং এই সমস্যা কাটিয়ে উঠতে, এক্সিকিউটর সার্ভিস নিয়ে আসে যা একটি উপ-ইন্টারফেস । এই নিবন্ধে, আমরা জাভাতে এক্সিকিউটর সার্ভিসের কার্যকারিতা নিয়ে আলোচনা করব। নিম্নলিখিত এই ব্লগে বিষয় অন্তর্ভুক্ত:
- এক্সিকিউটার ফ্রেমওয়ার্ক কী?
- জাভা উদাহরণে এক্সিকিউটর সার্ভিস
- জাভা এক্সিকিউটর সার্ভিস বাস্তবায়ন
- এক্সিকিউটর সার্ভিস ইউজ
- চলমান বনাম কলযোগ্য
- এক্সিকিউটর সার্ভিস শাটডাউন
এক্সিকিউটার ফ্রেমওয়ার্ক কী?
এক সাথে দুটি বা দুটি থ্রেড তৈরি করা এবং চালানো মোটামুটি সহজ। থ্রেডের সংখ্যা উল্লেখযোগ্য সংখ্যায় বৃদ্ধি পেলে এটি কঠিন হয়ে পড়ে। বৃহত্তর বহু-থ্রেডযুক্ত অ্যাপ্লিকেশনগুলিতে একসাথে কয়েকশ থ্রেড চলবে। অতএব এটি কোনও অ্যাপ্লিকেশনে থ্রেড ম্যানেজমেন্ট থেকে থ্রেড তৈরি আলাদা করতে সম্পূর্ণ বোধ করে।
নির্বাহক হলেন ক আপনাকে একটি অ্যাপ্লিকেশনে থ্রেড তৈরি এবং পরিচালনা করতে সহায়তা করে। দ্য নিম্নলিখিত কাজগুলিতে আপনাকে সহায়তা করে।
থ্রেড ক্রিয়েশন: এটি থ্রেড তৈরির জন্য বিভিন্ন পদ্ধতি সরবরাহ করে যা আপনার অ্যাপ্লিকেশনগুলি একই সাথে চালাতে সহায়তা করে।
থ্রেড ম্যানেজমেন্ট: এটি থ্রেড লাইফ চক্রটি পরিচালনা করে। কার্যকর করার জন্য টাস্ক জমা দেওয়ার আগে থ্রেডটি সক্রিয়, ব্যস্ত বা মৃত কিনা আপনার চিন্তার দরকার নেই।
টাস্ক সাবমিশন এবং এক্সিকিউশন: এক্সিকিউটার ফ্রেমওয়ার্ক থ্রেড পুলে টাস্ক জমা দেওয়ার জন্য পদ্ধতি সরবরাহ করে, এটি থ্রেডটি কার্যকর করা হবে কি না তা সিদ্ধান্ত নেওয়ার ক্ষমতাও দেয়।
জাভা উদাহরণে এক্সিকিউটর সার্ভিস
এটি নির্বাহী কাঠামোর একটি উপ-ইন্টারফেস যা কোনও অ্যাপ্লিকেশনটির থ্রেড লাইফ চক্রটি পরিচালনা করতে নির্দিষ্ট কার্যকারিতা যুক্ত করে। এটি একটি জমা () পদ্ধতিও সরবরাহ করে যা চলমান এবং কলযোগ্য উভয়ই গ্রহণ করতে পারে বস্তু
নিম্নলিখিত উদাহরণে, আমরা একটি একক থ্রেড দিয়ে এক্সিকিউটর সার্ভিস তৈরি করব এবং তারপরে থ্রেডের মধ্যে সম্পাদনযোগ্য টাস্কটি জমা দেব।
আমদানি java.util.concurrent.ExecutorService আমদানি java.util.concurrent.Executors পাবলিক বর্গ উদাহরণ {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {System.out.println ('অভ্যন্তরীণ:' + থ্রেড.কন্ট্রেন্টথ্রেড)) getName ( )) System.out.println ('এক্সিকিউটর সার্ভিস তৈরি করা') এক্সিকিউটর সার্ভিস এক্সিকিউটর সার্ভিস = এক্সিকিউটরস.ইনসইংথলথ্রেডেক্সেকটর () System.out.println ('রান্নেবল তৈরি করা') রান্নেবল রাননেবল = () -> {System.out.println ('ভিতরে: '+ থ্রেড। কর্নারথ্রেড ()। GetName ())। System.out.println (' চালানো দ্বারা নির্ধারিত টাস্কটি এক্সিকিউটর সার্ভিসে জমা দিন ') এক্সিকিউটার সার্ভিস.সবিমিট (চলমান)}}
আউটপুট: অভ্যন্তরস্থ: প্রধান তৈরি করানো এক্সিকিউটর সার্ভিস একটি রান রানযোগ্য তৈরি করে রানইনেবল দ্বারা নির্দিষ্ট করা টাস্কটি এক্সিকিউটিউটর সার্ভিসের ভিতরে জমা দিন: পুল-1-থ্রেড -1
সর্বোপরি দেখায় যে আমরা কীভাবে একটি এক্সিকিউটর সার্ভিস তৈরি করতে পারি এবং এক্সিকিউটারের ভিতরে কোনও কাজ সম্পাদন করতে পারি। যদি কোনও কার্য সম্পাদনের জন্য জমা দেওয়া হয় এবং থ্রেডটি বর্তমানে অন্য কোনও কার্য সম্পাদন করতে ব্যস্ত থাকে, তবে থ্রেডটি সঞ্চালনের জন্য থ্রেড মুক্ত না হওয়া পর্যন্ত একটি সারিতে অপেক্ষা করবে।
আপনি যখন উপরের প্রোগ্রামটি চালান, প্রোগ্রামটি কখনই প্রস্থান করে না। এক্সিকিউটার সার্ভিস নতুন কাজের জন্য শুনতে থাকায় আপনাকে এটিকে স্পষ্টভাবে বন্ধ করতে হবে।
জাভা এক্সিকিউটর সার্ভিস বাস্তবায়ন
এক্সিকিউটর সার্ভিস থ্রেড পুলের সাথে অনেকটা মিল। প্রকৃতপক্ষে, java.util.concurrent এ এক্সিকিউটারসেবার বাস্তবায়ন প্যাকেজ একটি থ্রেডপুল বাস্তবায়ন। এক্সিকিউটারসেবাজারের java.util.concurrent প্যাকেজে নিম্নলিখিত প্রয়োগ রয়েছে:
থ্রেডপুলএক্সেকটর
থ্রেডপুলএ্যাক্সিকিউটর তার অভ্যন্তরীণভাবে চালিত থ্রেডগুলির একটি ব্যবহার করে প্রদত্ত কাজগুলি সম্পাদন করে।
একটি থ্রেডপুলএক্সেকিউটার তৈরি করা হচ্ছে
ইন্টি কোরপুলসাইজ = 5 ইন ম্যাক্সপুলসাইজ = 10 লম্বা কিপআলাইভটাইম = 5000 এক্সিকিউটর সার্ভিস থ্রেডপুলএক্সিকিউটার = নতুন থ্রেডপুলএক্সেকিউটার (কোরপুলসাইজ, ম্যাকপুলসাইজ, কিপলাইভটাইম, টাইমউনিট.মিলিএসসিএনএন্ডস, নতুন লিঙ্কযুক্ত ব্লকিংকিউ ())
নির্ধারিত থ্রেডপুলএক্সেকিউটার
Java.util.concurrent.ScheduledThreadPoolExecutor একটি এক্সিকিউটর সার্ভিস যা দেরী হওয়ার পরে চালানো বা প্রতিটি মৃত্যুদন্ডের মধ্যে সময়ের সাথে একটি নির্দিষ্ট সময় অন্তর দিয়ে বারবার সম্পাদন করতে কার্য নির্ধারণ করতে পারে।
উদাহরণ
শিডিউডএকসিকিউটরসিডিসি শিডেক্সেক্সেকুটারস সার্ভিস = এক্সিকিউটরস.ইনউ শিচ্যুলড থ্রেডপুল (5) শিডিউডফিউচার শিডফিউচার = শিডিউলএক্সিকিউটর সার্ভিস.স্চুলেড (নতুন কলয়েবল)) পাবলিক অবজেক্ট কল () এক্সট্রেশন। System.out.println ('এক্সিকিউটড') রিটার্নকে '}U}, 5 বলে। দ্বিতীয়)
এক্সিকিউটর সার্ভিস ইউজ
এক্সিকিউটর সার্ভিসে কাজের প্রতিনিধি দেওয়ার কয়েকটি ভিন্ন উপায় রয়েছে।
চালানো (চলমান)
জমা দিন (চলমান)
অনুরোধ করুন কোন ()
সমস্ত আহবান করুন ()
চালানো চলমান
জাভা এক্সিকিউটর সার্ভিস এক্সিকিউট (চালানো) একটি java.lang.Runnable অবজেক্ট নেয় এবং এটি অযৌক্তিকভাবে কার্যকর করে।
এক্সিকিউটর সার্ভিস এক্সিকিউটর সার্ভিস = এক্সিকিউটরস.নিউসিংলথ্রেডএ্যাক্সিকিউটর () এক্সিকিউটর সার্ভিস.অ্যাকসিউট (নতুন রান্নেবল () {পাবলিক বায়োড রান () {System.out.println ('অ্যাসিনক্রোনাস টাস্ক')}}) এক্সিকিউটর সার্ভিস.সুট ডাউন))
এক্সিকিউট রান্নেবলের ফলাফল পাওয়ার কোনও উপায় নেই, এজন্য আপনাকে কলযোগ্য ব্যবহার করতে হবে।
রান্নেবল জমা দিন
জাভা এক্সিকিউটর সার্ভিস সাবমিট (চলমান) পদ্ধতিটি একটি চলমান বাস্তবায়ন নেয় এবং ভবিষ্যতের কোনও অবজেক্ট ফেরত দেয়। রান্নেবল কার্যকর করা শেষ করেছে কিনা তা পরীক্ষা করতে ভবিষ্যতের অবজেক্টটি ব্যবহার করা যেতে পারে।
ভবিষ্যতের ভবিষ্যত = এক্সিকিউটর সার্ভিস.সউবমিট (নতুন রান্নেবল () {সার্বজনীন শূন্যতম রান () {System.out.println (: অ্যাসিনক্রোনাস টাস্ক ')} future) ভবিষ্যত.জেট () // টাস্কটি সঠিকভাবে সমাপ্ত হলে শূন্য দেয়।
কলযোগ্য জমা দিন
জাভা এক্সিকিউটর সার্ভিস সাবমিট (কলযোগ্য) পদ্ধতিটি জমা দেওয়ার মতো (রান্নেবল) তবে এটি রান্নেবলের পরিবর্তে জাভা কলযোগ্য লাগে।
ভবিষ্যতের ভবিষ্যত = এক্সিকিউটর সার্ভিস.সুবমিট (নতুন কলযোগ্য () {পাবলিক অবজেক্ট কল () ব্যতিক্রম ছোঁড়ে {System.out.println ('অ্যাসিঙ্ক্রোনাস কলযোগ্য') রিটার্ন 'কলযোগ্য রেজাল্ট'}}) System.out.println ('ভবিষ্যত.জেট ( ) = 'ভবিষ্যত.জেট ())
আউটপুট: অ্যাসিনক্রোয়াস কলযোগ্য ভবিষ্যত.গেট = কলযোগ্য ফলাফল
অনুরোধ করুন কোন ()
ইনভোক এনি () পদ্ধতি কলযোগ্য বস্তুর সংকলন নেয়। এই পদ্ধতিটি চালিয়ে যাওয়া কোনও ভবিষ্যত ফেরায় না, তবে কলযোগ্য বস্তুর মধ্যে একটির ফলাফল প্রদান করে।
এক্সিকিউটর সার্ভিস এক্সিকিউটর সার্ভিস = এক্সিকিউটরস.নিউসিংলথ্রেডএ্যাক্সিকিউটর () সেটকলযোগ্য = নতুন হ্যাশসেট () কল্যাবস.এডিডি (নতুন কলযোগ্য () {পাবলিক স্ট্রিং কল () ছদ্মবেশ ব্যতিক্রম {রিটারনটাস্ক এ '}}) কল্যাবস.এডিডি (নতুন কলযোগ্য () {পাবলিক স্ট্রিং কল () ব্যতিক্রম ছোঁড়া Ex রিটারনেটস্ক বি'} la) callables.add (নতুন কলযোগ্য () {পাবলিক স্ট্রিং কল () ছুটি ছাড়াই ব্যতিক্রম {রিটারনটাস্ক সি '}}) স্ট্রিং রেজাল্ট = এক্সিকিউটরসওয়ারস.ইন.ওইকেন (সিস্টেম) আউট (প্রিন্ট =' + ফলাফল) এক্সিকিউটর সার্ভিস .শটডাউন ()
আপনি যখন উপরের কোডটি চালান, ফলাফল পরিবর্তন হয়। এটি টাস্ক এ, টাস্ক বি এবং আরও কিছু হতে পারে।
ইনভোকএল ()
ইনভোকএল () পদ্ধতিটি পরামিতি হিসাবে পাস করা সমস্ত কলযোগ্য বস্তুগুলিকে অনুরোধ করে। এটি ভবিষ্যতের বস্তুগুলি প্রত্যাবর্তন করে যা প্রতিটি কলযোগ্য কার্যকর করার ফলাফল পেতে ব্যবহার করা যেতে পারে।
এক্সিকিউটর সার্ভিস এক্সিকিউটর সার্ভিস = এক্সিকিউটরস.নিউসিংলথ্রেডএ্যাক্সিকিউটর () সেটকলযোগ্য = নতুন হ্যাশসেট () কল্যাবস.এডডি (নতুন কলযোগ্য () {পাবলিক স্ট্রিং কল () ব্যতিক্রম ছোঁড়ে {রিটার্ন 'টাস্ক এ'}}) কল্যাবস.এডডি (নতুন কলযোগ্য () {পাবলিক স্ট্রিং কল () ব্যতিক্রম ছোঁড়ে {ফেরত 'টাস্ক বি'} la) callables.add (নতুন কলযোগ্য () {পাবলিক স্ট্রিং কল () ছুঁড়ে ফেলেছে ব্যতিক্রম {রিটার্ন 'টাস্ক সি'}}) তালিকা ফিউচারস = এক্সিকিউটর সার্ভিস.ইন.ওউকএল (কল্যাবলস) এর জন্য (ভবিষ্যতের ভবিষ্যত: ফিউচার) {System.out.println ('ভবিষ্যত.গেট =' + ভবিষ্যত.সেট ())} এক্সিকিউটর সার্ভিস.সুটডাউন ()
চলমান বনাম কলযোগ্য
চলমান এবং কলযোগ্য ইন্টারফেস একে অপরের সাথে খুব মিল রয়েছে। এর ঘোষণায় পার্থক্যটি দৃশ্যমান ইন্টারফেস। উভয় ইন্টারফেস একটি টাস্ক প্রতিনিধিত্ব করে যা থ্রেড বা এক্সিকিউটারসেবা দ্বারা একই সাথে সম্পাদন করা যেতে পারে।
কলযোগ্য ঘোষণা:
পাবলিক ইন্টারফেস কলযোগ্য {পাবলিক অবজেক্ট কল () ব্যতিক্রম ছোঁড়ে}
চলমান ঘোষণা:
সার্বজনীন ইন্টারফেস চলমান {পাবলিক শূন্য রান ()}
উভয়ের মধ্যে প্রধান পার্থক্য হ'ল কল () পদ্ধতিটি পদ্ধতি কল থেকে কোনও অবজেক্ট ফিরিয়ে আনতে পারে। এবং কল () পদ্ধতিটি একটি নিক্ষেপ করতে পারে চালানোর সময় () পদ্ধতিটি পারে না।
উদাহরণস্বরূপ ইনফর্মটিকাতে এক্সএমএল রূপান্তর
কাজ বাতিল
আপনি টাস্কটি জমা দেওয়ার সময় জমা দেওয়া ভবিষ্যতে কেবল বাতিল পদ্ধতিতে কল করে এক্সিকিউটর সার্ভিসে জমা দেওয়া কাজটি বাতিল করতে পারেন।
ভাবী.ক্যান্সেল ()
এক্সিকিউটর সার্ভিস শাটডাউন
মৃত্যুদন্ড কার্যকর হওয়ার পরেও থ্রেডগুলি চলমান থেকে বাঁচতে আপনার এক্সিকিউটর সার্ভিসটি বন্ধ করে দেওয়া উচিত।
শাটডাউন ()
এক্সিকিউটারসেবার ভিতরে থ্রেডগুলি শেষ করতে আপনি শাটডাউন () পদ্ধতিতে কল করতে পারেন।
এক্সিকিউটর সার্ভিস.শুটডাউন ()
এটি আমাদের এই নিবন্ধের শেষের দিকে নিয়ে আসে যেখানে আমরা শিখেছি কীভাবে আমরা একটি থ্রেডে কার্য সম্পাদন করতে এক্সিকিউটর সার্ভিস ব্যবহার করতে পারি। আমি আশা করি এই টিউটোরিয়ালে আপনার সাথে যা ভাগ করা হয়েছে তার সাথে আপনি পরিষ্কার হয়ে গেছেন।
যদি আপনি 'জাভাতে এক্সিকিউটর সার্ভিস' সম্পর্কিত এই নিবন্ধটি পেয়ে থাকেন তবে এটি দেখুন বিশ্বজুড়ে ছড়িয়ে থাকা 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা।
আমরা আপনার যাত্রার প্রতিটি পদক্ষেপে আপনাকে সহায়তা করতে এবং জাভা বিকাশকারী হতে চান এমন শিক্ষার্থী এবং পেশাদারদের জন্য তৈরি একটি পাঠ্যক্রম নিয়ে হাজির। কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং বিভিন্ন এবং উভয় মূল এবং উন্নত জাভা ধারণার জন্য আপনাকে প্রশিক্ষণের জন্য ডিজাইন করা হয়েছে পছন্দ হাইবারনেট & ।
যদি আপনার কোনও প্রশ্ন আসে তবে নির্দ্বিধায় আপনার সমস্ত প্রশ্ন 'জাভাতে এক্সিকিউটর সার্ভিস' এর মন্তব্য বিভাগে জিজ্ঞাসা করুন এবং আমাদের দলটি উত্তর দিতে পেরে খুশি হবে।