যদি InterruptedException
কোনওটি নিক্ষিপ্ত হয় তবে এর অর্থ হ'ল কোনও কিছু সেই থ্রেডকে বাধা দিতে (সাধারণত সমাপ্ত করতে) চায়। এটি থ্রেড interrupt()
পদ্ধতিতে একটি কল দ্বারা ট্রিগার করা হয় । অপেক্ষার পদ্ধতিটি এটি সনাক্ত করে এবং একটি ছুঁড়ে দেয় InterruptedException
যাতে ক্যাচ কোডটি অবিলম্বে সমাপ্তির জন্য অনুরোধটি পরিচালনা করতে পারে এবং নির্দিষ্ট সময় শেষ না হওয়া পর্যন্ত অপেক্ষা করতে হবে না।
আপনি যদি এটি একক থ্রেডেড অ্যাপ্লিকেশন (এবং কিছু মাল্টি-থ্রেডেড অ্যাপ্লিকেশনগুলিতেও) ব্যবহার করেন তবে এই ব্যতিক্রমটি কখনই ট্রিগার হবে না। খালি ক্যাচ ক্লজ থাকার মাধ্যমে এটিকে উপেক্ষা করে আমি সুপারিশ করব না। নিক্ষেপ করা InterruptedException
থ্রেডের অন্তরায়িত স্থিতি পরিষ্কার করে, সুতরাং সঠিকভাবে পরিচালনা না করা হলে সেই তথ্যটি হারিয়ে যায়। সুতরাং আমি চালানোর প্রস্তাব করব:
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
// code for stopping current task so thread stops
}
যা আবার সেই রাষ্ট্র নির্ধারণ করে। তারপরে, ফাঁসি কার্যকর করুন। এটি সঠিক আচরণ হবে, এমনকি শক্ত কখনও ব্যবহার করা হবে না।
এটি যুক্ত করা ভাল কি হতে পারে:
} catch (InterruptedException e) {
throw new RuntimeException("Unexpected interrupt", e);
}
... ধরা ব্লকে বিবৃতি। মূলত এর অর্থ হ'ল এটি কখনই ঘটবে না। সুতরাং কোডটি যদি এমন পরিবেশে আবার ব্যবহার করা হয় যেখানে এটি ঘটে যেতে পারে তবে এটি তার সম্পর্কে অভিযোগ করবে।