


Bagaimana untuk Menetapkan Tamat Masa untuk Benang dalam Java Menggunakan ExecutorService?
Cara Menetapkan Tamat Masa untuk Thread
Seperti yang dibangkitkan dalam siasatan awal, terdapat kebimbangan tentang cara menyekat pelaksanaan utas masa. Matlamatnya adalah untuk mengendalikan situasi di mana utas mungkin memasuki gelung tak terhingga, menyebabkan utas induk menunggu selama-lamanya.
Satu penyelesaian yang dibincangkan melibatkan penggunaan TimerTask dalam kaedah run() Thread. Walau bagaimanapun, pendekatan yang lebih cekap ialah memanfaatkan kelas ExecutorService. Ini menyediakan mekanisme yang mudah untuk menetapkan tamat masa pada urutan.
Contoh pelaksanaan menggunakan ExecutorService boleh digambarkan seperti berikut:
import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class TimeoutTest { public static void main(String[] args) throws Exception { 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(); } } class Task implements Callable<string> { @Override public String call() throws Exception { Thread.sleep(4000); // Simulate a long-running task that takes 4 seconds return "Ready!"; } }</string></string>
Dalam contoh ini, kelas Tugas merangkum panjang- menjalankan tugas. Kaedah ExecutorService.submit() digunakan untuk menyerahkan tugasan ini untuk dilaksanakan. Objek Masa Depan yang dikembalikan oleh submit() menyediakan mekanisme untuk mendapatkan semula hasil tugasan.
Kaedah Future.get() dipanggil dengan hujah tamat masa selama 3 saat. Jika tugasan selesai dalam tempoh masa ini, hasilnya dikembalikan. Walau bagaimanapun, jika tugasan mengambil masa lebih lama daripada 3 saat, TimeoutException dilemparkan. Dalam blok tangkapan, tugas dibatalkan dan "Ditamatkan!" mesej dicetak.
Selain itu, adalah penting untuk ambil perhatian bahawa dalam tugasan yang berjalan lama, semakan harus digabungkan untuk mengendalikan gangguan, menghalang tugas daripada berjalan selama-lamanya. Semakan ini boleh dilaksanakan menggunakan Thread.interrupted().
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Tamat Masa untuk Benang dalam Java Menggunakan ExecutorService?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver Mac版
Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.