অ্যাসিনহেল্পার জাভা লাইব্রেরিতে অ্যাসিক্রোনাস কলগুলির জন্য ইউটিলিটি ক্লাস / পদ্ধতির একটি সেট অন্তর্ভুক্ত রয়েছে (এবং অপেক্ষা করুন)।
যদি অ্যাসিঙ্ক্রোনালি পদ্ধতিতে কল কল বা কোড ব্লকগুলির একটি সেট চালানোর ইচ্ছা হয়, তবে এটিতে একটি সহায়ক সহায়ক পদ্ধতি অ্যাসিঙ্কটাস্ক অন্তর্ভুক্ত রয়েছে ub সাবমিট টাস্কগুলি নীচের স্নিপেটের মতো।
AsyncTask.submitTasks(
() -> getMethodParam1(arg1, arg2),
() -> getMethodParam2(arg2, arg3)
() -> getMethodParam3(arg3, arg4),
() -> {
//Some other code to run asynchronously
}
);
যদি সমস্ত অ্যাসিঙ্ক্রোনাস কোড চলমান শেষ না হওয়া পর্যন্ত এটি অপেক্ষা করা পছন্দ করে তবে অ্যাসিঙ্কটাস্ক.সুমিতটাস্কসঅ্যান্ড ওয়েইট ভেরিয়েন্ট ব্যবহার করা যেতে পারে।
এছাড়াও যদি প্রতিটি অ্যাসিনক্রোনাস পদ্ধতি কল বা কোড ব্লকের কাছ থেকে কোনও রিটার্ন মান অর্জন করতে ইচ্ছুক থাকে তবে অ্যাসিঙ্কসপ্লায়ারস। সাবমিটসপ্লায়ার্স ব্যবহার করা যেতে পারে যাতে পদ্ধতিটি দ্বারা সরবরাহিত ফলাফল সরবরাহকারী অ্যারে থেকে ফলাফলটি পাওয়া যায়। নীচে নমুনার স্নিপেট রয়েছে:
Supplier<Object>[] resultSuppliers =
AsyncSupplier.submitSuppliers(
() -> getMethodParam1(arg1, arg2),
() -> getMethodParam2(arg3, arg4),
() -> getMethodParam3(arg5, arg6)
);
Object a = resultSuppliers[0].get();
Object b = resultSuppliers[1].get();
Object c = resultSuppliers[2].get();
myBigMethod(a,b,c);
যদি প্রতিটি পদ্ধতির রিটার্নের ধরন পৃথক হয় তবে নীচের ধরণের স্নিপেট ব্যবহার করুন।
Supplier<String> aResultSupplier = AsyncSupplier.submitSupplier(() -> getMethodParam1(arg1, arg2));
Supplier<Integer> bResultSupplier = AsyncSupplier.submitSupplier(() -> getMethodParam2(arg3, arg4));
Supplier<Object> cResultSupplier = AsyncSupplier.submitSupplier(() -> getMethodParam3(arg5, arg6));
myBigMethod(aResultSupplier.get(), bResultSupplier.get(), cResultSupplier.get());
অ্যাসিক্রোনাস পদ্ধতি কল / কোড ব্লকের ফলাফলও একই থ্রেডের কোডের ভিন্ন পয়েন্টে বা নীচের স্নিপেটের মতো আলাদা থ্রেডে পাওয়া যাবে।
AsyncSupplier.submitSupplierForSingleAccess(() -> getMethodParam1(arg1, arg2), "a");
AsyncSupplier.submitSupplierForSingleAccess(() -> getMethodParam2(arg3, arg4), "b");
AsyncSupplier.submitSupplierForSingleAccess(() -> getMethodParam3(arg5, arg6), "c");
//Following can be in the same thread or a different thread
Optional<String> aResult = AsyncSupplier.waitAndGetFromSupplier(String.class, "a");
Optional<Integer> bResult = AsyncSupplier.waitAndGetFromSupplier(Integer.class, "b");
Optional<Object> cResult = AsyncSupplier.waitAndGetFromSupplier(Object.class, "c");
myBigMethod(aResult.get(),bResult.get(),cResult.get());