Cara menyelesaikan pengecualian kaedah Java yang ditolak (MethodInvocationRejectedException)
Dalam proses menggunakan pembangunan Java, kita sering menghadapi pelbagai situasi yang tidak normal. Antaranya, pengecualian kaedah Java yang ditolak (MethodInvocationRejectedException) adalah pengecualian biasa. Artikel ini akan memperkenalkan pengecualian MethodInvocationRejectedException dan menyediakan kaedah dan contoh kod untuk menyelesaikan pengecualian.
Apakah MethodInvocationRejectedException?
MethodInvocationRejectedException ialah pengecualian dalam rangka kerja Spring. Ia biasanya berlaku apabila panggilan kaedah ditolak. Apabila kami menggunakan kumpulan utas rangka kerja Spring atau tugas tak segerak, jika kumpulan utas atau baris gilir tugas penuh, panggilan kaedah baharu akan ditolak dan pengecualian MethodInvocationRejectedException akan dilemparkan.
Kaedah untuk menyelesaikan MethodInvocationRejectedException:
Berikut ialah contoh kod menggunakan kumpulan benang untuk menunjukkan cara menetapkan dasar penolakan yang sesuai untuk mengendalikan pengecualian MethodInvocationRejectedException:
import java.util.concurrent.*; public class ThreadPoolExample { public static void main(String[] args) { // 创建线程池 ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1)); // 设置拒绝策略为CallerRunsPolicy executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 提交任务 for (int i = 0; i < 3; i++) { final int taskId = i; executor.submit(() -> { System.out.println("Task " + taskId + " is running on thread " + Thread.currentThread().getName()); // 模拟任务执行时间 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }); } // 关闭线程池 executor.shutdown(); } }
Dalam kod di atas, kami mencipta pelaksana kumpulan benang dan menetapkan bilangan maksimum utas kepada 1 , tugas Saiz baris gilir ialah 1. Apabila bilangan tugasan yang diserahkan melebihi 1, kumpulan benang akan menggunakan dasar CallerRunsPolicy untuk melaksanakan tugas yang ditolak, iaitu, tugasan akan diserahkan kepada urutan pemanggil untuk dilaksanakan.
Melalui kaedah di atas, kami boleh menyelesaikan pengecualian MethodInvocationRejectedException dan meningkatkan keupayaan pemprosesan serentak sistem. Walau bagaimanapun, perlu diingatkan bahawa terlalu banyak benang dan baris gilir tugas yang terlalu besar boleh menyebabkan penggunaan sumber sistem yang berlebihan Oleh itu, apabila menetapkan parameter kumpulan benang, anda perlu melaraskannya mengikut situasi sebenar.
Ringkasan:
Pengecualian panggilan ditolak kaedah Java (MethodInvocationRejectedException) ialah pengecualian biasa dalam rangka kerja Spring, yang biasanya berlaku apabila kumpulan benang atau baris gilir tugas penuh. Untuk menyelesaikan pengecualian ini, kami boleh meningkatkan kapasiti kumpulan benang atau baris gilir tugas, atau menggunakan dasar penolakan yang sesuai. Dalam penggunaan sebenar, ia perlu diselaraskan mengikut keperluan sistem dan mengelakkan penggunaan sumber yang berlebihan.
Kami berharap kaedah dan contoh kod yang disediakan dalam artikel ini dapat membantu pembaca menyelesaikan pengecualian MethodInvocationRejectedException dan menggunakan kumpulan benang dan tugas tak segerak dengan lebih baik untuk meningkatkan prestasi sistem semasa proses pembangunan.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan pengecualian kaedah Java yang ditolak (MethodInvocationRejectedException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!