Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mencipta Perkhidmatan Pelaksana Yang Mengganggu Tugas Selepas Tamat Masa?

Bagaimanakah Saya Boleh Mencipta Perkhidmatan Pelaksana Yang Mengganggu Tugas Selepas Tamat Masa?

Patricia Arquette
Patricia Arquetteasal
2024-11-28 04:25:13483semak imbas

How Can I Create an ExecutorService That Interrupts Tasks After a Timeout?

Perkhidmatan Pelaksana Tamat Masa

Ikhtisar

Dalam konteks ini, kami berminat dengan pelaksanaan ExecutorService yang mampu mengganggu tugasan yang melebihi tamat masa yang telah ditetapkan.

Sedia ada Pelaksanaan

Salah satu pelaksanaan sedemikian ialah TimeoutThreadPoolExecutor, yang menyediakan mekanisme untuk menentukan tempoh tamat masa untuk tugasan yang diserahkan.

Butiran Pelaksanaan


import java.util.List;
import java.util.concurrent.*;

kelas awam TimeoutThreadPoolExecutor melanjutkan ThreadPoolExecutor {

private final long timeout;
private final TimeUnit timeoutUnit;

// ... (rest of the implementation)

}

Penggunaan

>Untuk menggunakan perkhidmatan pelaksana ini, cuma buat satu contoh, menyatakan tamat masa yang diingini:

TimeoutThreadPoolExecutor executor = new TimeoutThreadPoolExecutor(..., timeout, TimeUnit.MILLISECONDS);

Kemudian, serahkan tugas anda kepada pelaksana seperti biasa. Tugasan yang melebihi tamat masa yang ditetapkan akan terganggu.

Pendekatan Alternatif

Sebagai alternatif, anda boleh menggunakan ScheduledExecutorService:

ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);
Future<?> handler = executor.submit(new Callable() { /* ... */ });
executor.schedule(() -> handler.cancel(true), 10000, TimeUnit.MILLISECONDS);

Strategi ini memastikan tugasan terganggu selepas 10 saat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Perkhidmatan Pelaksana Yang Mengganggu Tugas Selepas Tamat Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn