Threading Timeout: Penyelesaian Alternatif kepada TimerTask
Dalam senario di mana anda memerlukan urutan untuk dilaksanakan dalam jangka masa yang telah ditetapkan, anda boleh mencari kaedah untuk mengehadkan tempoh pelaksanaannya. Satu pendekatan yang biasa diterokai melibatkan penggunaan TimerTask dalam kaedah run() thread. Walau bagaimanapun, terdapat penyelesaian yang lebih berkesan untuk mencapai objektif ini.
ExecutorService: Alternatif Teguh
ExecutorService menyediakan pilihan yang lebih baik untuk mengurus tamat masa thread berbanding TimerTask. Kelas ini menawarkan pendekatan terpusat untuk melaksanakan dan mengawal berbilang benang secara serentak. Objek Masa Depannya membolehkan anda mendapatkan semula hasil tugas tak segerak atau mengendalikan pengecualian yang mungkin timbul.
Melaksanakan Pelaksanaan Bermasa dengan ExecutorService
Contoh kod menggunakan ExecutorService untuk mewujudkan tamat masa untuk utas pelaksanaan:
ExecutorService executor = Executors.newSingleThreadExecutor(); Future<String> future = executor.submit(new Task()); try { System.out.println("Started..."); System.out.println(future.get(3, TimeUnit.SECONDS)); System.out.println("Finished!"); } catch (TimeoutException e) { future.cancel(true); System.out.println("Terminated!"); } executor.shutdownNow();
Dalam contoh ini, kaedah Future#get() digunakan untuk mendapatkan semula hasil tugasan. Jika tugasan tidak selesai dalam masa tamat yang ditentukan (3 saat dalam kes ini), TimeoutException dilemparkan. Anda kemudiannya boleh membatalkan tugasan dan menamatkan urutan.
Mengendalikan Tugasan Jangka Panjang
Apabila bekerja dengan tugasan yang berjalan lama dalam urutan, adalah penting untuk menggabungkan logik yang secara berkala menyemak gangguan. Ini memastikan bahawa tugas boleh ditamatkan jika ia menjadi tidak bertindak balas atau memasuki gelung tak terhingga. Coretan kod berikut menggambarkan teknik ini:
while (!Thread.interrupted()) { // Your long-running task logic here. }
Dengan menggabungkan konsep ini, anda boleh melaksanakan tamat masa urutan dengan berkesan, memastikan pelaksanaan tepat pada masanya dan pengendalian potensi isu yang mungkin timbul semasa pelaksanaan tugas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Tamat Masa Benang dengan Berkesan Melangkaui TimerTask?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!