জাভা ভিত্তিক ওয়েব অ্যাপ্লিকেশন বনাম স্ট্যান্ড-একা জাভা অ্যাপ্লিকেশনটিতে মাল্টি-থ্রেডিং কীভাবে আলাদা


13

আমি জাভাতে মোটামুটি নতুন এবং আমার অভিজ্ঞতা ওয়েব কন্টেইনারটিতে চালিত ওয়েব ভিত্তিক অ্যাপ্লিকেশনগুলির মধ্যে সীমাবদ্ধ (আমার ক্ষেত্রে জবস)।

আমি কি এই কথাটি সঠিক বলেছি যে ওয়েব অ্যাপ্লিকেশনগুলির জন্য ওয়েব ধারকটি মাল্টি-থ্রেডিংয়ের যত্ন নেয়? যদি তা হয় তবে আমি কি ওয়েব ভিত্তিক অ্যাপ্লিকেশনগুলিতে নতুন ট্রেডগুলি প্রবর্তন করতে পারি? এটি করার কোনও সুবিধা আছে এবং কোন দৃশ্যে এটি করা দরকার?


EE6 অবধি আপনি থ্রেড ব্যবহার করবেন না; EE7 পরিচয় করিয়ে দেয় Concurrency Utilities
মনিকা পুনরায় ইনস্টল করুন - এম। শ্রাইডার

উত্তর:


20

আমি কি এই কথাটি সঠিক বলেছি যে ওয়েব অ্যাপ্লিকেশনগুলির জন্য ওয়েব ধারকটি মাল্টি-থ্রেডিংয়ের যত্ন নেয়?

বেশিরভাগ ওয়েবসার্ভার (জাভা এবং অন্যথায় জেবস সহ) একটি "অনুরোধ প্রতি এক থ্রেড" মডেল অনুসরণ করে, অর্থাৎ প্রতিটি এইচটিটিপি অনুরোধ সম্পূর্ণ এক থ্রেড দ্বারা সম্পূর্ণ প্রক্রিয়াজাত হয়। এই থ্রেডটি বেশিরভাগ সময় ডিবি অনুরোধের মতো জিনিসের জন্য অপেক্ষা করতে ব্যয় করবে। ওয়েব ধারকটি প্রয়োজনীয়ভাবে নতুন থ্রেড তৈরি করবে।

কিছু সার্ভার (জাভা বাস্তুতন্ত্রের মূলত নেটটি ) একটি "থ্রেড সবকিছু করে" মডেল বা আরও জটিল কিছু সহ অ্যাসিঙ্ক্রোনাস অনুরোধ পরিচালনা করে। মূল ধারণাটি হ'ল প্রচুর অপেক্ষার থ্রেড থাকা সংস্থানগুলির অপচয় করে, তাই অ্যাসিনক্রোনাকলভাবে কাজ করা আরও কার্যকর হতে পারে।

যদি তা হয় তবে আমি কি ওয়েব ভিত্তিক অ্যাপ্লিকেশনগুলিতে নতুন ট্রেডগুলি প্রবর্তন করতে পারি?

এটি সম্ভব, তবে খুব সাবধানতার সাথে করা উচিত, যেহেতু ত্রুটিগুলি (যেমন মেমরি ফাঁস বা অনুপস্থিত সিঙ্ক্রোনাইজেশন) এর ফলে পুনরুত্পাদন করা বা পুরো সার্ভারটি নীচে আনা বা বাগের কারণ হতে পারে।

এটি করার কোনও সুবিধা আছে এবং কোন দৃশ্যে এটি করা দরকার?

ঠিক আছে, সুবিধাটি হ'ল আপনি সমান্তরালে স্টাফগুলি করতে পারেন। খাঁটি গণনার গতি উন্নত করতে থ্রেড ব্যবহার করা এমন একটি যা আপনার ওয়েবসার্ভারে করা উচিত নয় , কারণ এটি অন্যান্য অনুরোধগুলির পরিচালনা হ্রাস করে। এই জাতীয় জিনিসটি একটি পৃথক সার্ভারে করা উচিত, সম্ভবত কোনও ধরণের কাজের সারি ব্যবহার করে।

এইচটিটিপি অনুরোধ পরিচালনা করার প্রসঙ্গে মাল্টিথ্রেডিংয়ের একটি বৈধ দৃশ্যের কারণ হতে পারে আপনার যদি অন্য নেটওয়ার্ক সংস্থান অ্যাক্সেস করার প্রয়োজন হয়, যেমন কয়েকটি বিভিন্ন ওয়েব পরিষেবা কল করুন। আপনি যদি এটি একক থ্রডে করেন তবে প্রতিটি কলটি ঘুরে দেখার জন্য অপেক্ষা করতে হবে। তবে আপনি যদি একাধিক থ্রেড ব্যবহার করেন তবে মোট অপেক্ষার সময়টি কেবলমাত্র একক ধীরতম কলের বিলম্ব।


3
বোধ হয়। ওয়েব অ্যাপ্লিকেশনটিতে নতুন থ্রেড তৈরির বিষয়ে এক্সিকিউটর সার্ভিস ইন্টারফেস কি সেরা উপায়?
কাপ্রিকনন

4
@ ক্যাপ্রিকানন: হ্যাঁ, যদি না আপনার কিছু নির্দিষ্ট প্রয়োজনীয়তা থাকে যা এটি পরিচালনা করতে পারে না, বা আপনার ওয়েব সার্ভারের ইতিমধ্যে কিছু অনুরূপ রয়েছে।
মাইকেল বর্গওয়ার্ট

2

আপনার প্রশ্নের জবাবে:

জাভা ভিত্তিক ওয়েব অ্যাপ্লিকেশন বনাম স্ট্যান্ড-একা জাভা অ্যাপ্লিকেশনটিতে মাল্টি-থ্রেডিং কীভাবে আলাদা

এটি আলাদা নয়। সাধারণত সফ্টওয়্যার ওয়েব অ্যাপ্লিকেশনগুলি অন্তর্নির্মিত প্রতিটি নতুন অনুরোধকে একটি থ্রেড তৈরি করে ইতিমধ্যে কিছু মাল্টি-থ্রেডিং সরবরাহ করবে। আপনি যেভাবে অন্য কোনও অ্যাপ্লিকেশন হিসাবে থ্রেড ব্যবহার / তৈরি করতে পারেন।

প্রকৃতপক্ষে মাল্টি-থ্রেডিং আপনাকে সঠিকভাবে ব্যবহার করা হলে কঠোর কর্মক্ষমতা বাড়িয়ে তুলতে পারে। I / O নিবিড় কাজের জন্য যেমন নেটওয়ার্ক অ্যাক্সেস এবং ডিস্ক ড্রাইভ অ্যাক্সেসের পারফরম্যান্স বৃদ্ধি প্রায় সর্বদা গ্যারান্টিযুক্ত। গণনামূলকভাবে নিবিড় কাজগুলির জন্য আপনাকে সার্ভারে প্রতিটি প্রতি থ্রেডের নিয়ম মেনে চলা উচিত। উদাহরণস্বরূপ, যদি আপনার কোরটিতে আই 7 প্রসেসর থাকে তবে আপনার কম্পিউটারের কাজগুলি করতে 7 টি থ্রেড থাকা উচিত।

আপনার প্রশ্নের জবাবে:

এটি করার কোনও সুবিধা আছে এবং কোন দৃশ্যে এটি করা দরকার?

মাইকেল বর্গওয়ার্ট বলছেন গণনার গতি উন্নত করার জন্য আপনার এটি করা উচিত নয়। আমি অসম্মতি জানাচ্ছি, যেমন এই নিবন্ধটি পরামর্শ দিচ্ছে যে যখন ব্যবহারকারীদের একটি কম্পিউটেশনালি ভারী কাজ করা দরকার তখন মাল্টি-থ্রেডিং প্রতিক্রিয়া জানাতে সহায়তা করতে পারে। সরল ইংরেজিতে, ব্যবহারকারীদের মাল্টি-থ্রেডিং সহ গণ্য ভারী কাজগুলি শেষ করতে অপেক্ষা করতে হবে না।

আপনি যদি থ্রেড প্রচুর ব্যবহার করতে চান তবে আমি একটি থ্রেড পুল ব্যবহার করার পরামর্শ দিচ্ছি। এটি থ্রেড তৈরির ওভারহেড হ্রাস করবে।


এই প্রশ্ন জিজ্ঞাসা উত্তর কিভাবে?
gnat

1
উত্তরগুলি তাদের নিজস্ব যোগ্যতার উপর দাঁড়ানো উচিত। আপনি যদি মন্তব্য করতে চান তবে আপনাকে প্রথমে 50 টি খ্যাতি অর্জন করতে হবে।
ক্রিসএফ

1

ওয়েল এটি একটি দুর্দান্ত প্রশ্ন এবং আমি মনে করি ওয়েব অ্যাপ্লিকেশন বিকাশে কাজ করা বেশিরভাগ বিকাশকারী স্পষ্টভাবে মাল্টিথ্রেডিং ব্যবহার করেন না। কারণটি স্পষ্টত যেহেতু আপনি আপনার অ্যাপ্লিকেশন ব্যবহার করতে একটি অ্যাপ্লিকেশন সার্ভার ব্যবহার করছেন, অ্যাপ্লিকেশন সার্ভার অভ্যন্তরীণ অনুরোধগুলির জন্য একটি থ্রেড পুল পরিচালনা করে।

তাহলে কেন স্পষ্টভাবে মাল্টিথ্রেডিং ব্যবহার করবেন? ওয়েব অ্যাপ্লিকেশন বিকাশকারী কী কী নিজেকে মাল্টিথ্রেডিংয়ে প্রকাশ করতে পারে?

আপনি যখন একটি বৃহত্তর স্কেল অ্যাপ্লিকেশনটিতে কাজ করেন যেখানে আপনাকে একই সাথে অনেকগুলি অনুরোধ সার্ভার করতে হয় তখন প্রতিটি ধরণের অনুরোধকে সমকালীনভাবে পরিবেশন করা কঠিন কারণ নির্দিষ্ট ধরনের অনুরোধ অনেকগুলি প্রক্রিয়াজাতকরণ করতে পারে যা আপনার অ্যাপ্লিকেশনটির কার্যকারিতা হ্রাস করতে পারে।

উদাহরণস্বরূপ যেখানে একটি ওয়েব অ্যাপ্লিকেশন নির্দিষ্ট ধরণের অনুরোধ পরিবেশন করার পরে ব্যবহারকারীদের ইমেল এবং এসএমএসের মাধ্যমে অবহিত করা উচিত। অনুরোধের থ্রেডের সাথে এটি সুসংগতভাবে করা আপনার ওয়েব অ্যাপ্লিকেশনটির কার্যকারিতা হ্রাস করতে পারে। সুতরাং এখানে mutlithreading ভূমিকা আসে। এই জাতীয় ক্ষেত্রে কেবল ইমেল এবং এসএমএস প্রেরণের জন্য দায়ী এমন নেটওয়ার্কের উপর একা স্ট্যান্ড মাল্টিথ্রেডেড অ্যাপ্লিকেশন বিকাশ করার পরামর্শ দেওয়া হয়।


কেন এই উত্তর হ্রাস করা হয়?
অনুরাগ শর্মা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.