সমস্ত কাজ ExecutorServiceশেষ হওয়ার অপেক্ষার সহজ উপায় কী ? আমার কাজটি প্রাথমিকভাবে গণনামূলক, তাই আমি কেবল প্রচুর সংখ্যক কাজ চালাতে চাই - প্রতিটি কোরে একটি করে। এখনই আমার সেটআপটি দেখতে এমন দেখাচ্ছে:
ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases) {
es.execute(new ComputeDTask(singleTable));
}
try{
es.wait();
}
catch (InterruptedException e){
e.printStackTrace();
}
ComputeDTaskচলমান কার্যকর। এই সঠিকভাবে কর্ম নির্বাহ মনে হচ্ছে, কিন্তু কোডের উপর ক্র্যাশ wait()সঙ্গে IllegalMonitorStateException। এটি অদ্ভুত, কারণ আমি কয়েকটি খেলনার উদাহরণ দিয়ে খেলেছি এবং এটি কাজ করার জন্য উপস্থিত হয়েছিল।
uniquePhrasesকয়েক হাজার উপাদানকে ধারণ করে। আমার অন্য পদ্ধতি ব্যবহার করা উচিত? আমি যতটা সম্ভব সহজ কিছু সন্ধান করছি
Executors.newFixedThreadPool(System.getRuntime().availableProcessors());
es) আপনি যখন অপেক্ষা করতে চান - লকটি স্বয়ংক্রিয়ভাবে অপেক্ষা করা অবস্থায় প্রকাশিত হবে