所谓的中断操作:它并不会真正地中断一个正在运行的线程,而只是发出中断请求,然后由线程在下一个合适的时刻中断自己。
调用一次interrupt中断请求,再次调用就是把中断状态恢复
1、响应中断
处理中断异常:
1》传递异常
2》恢复中断状态
这里有一个示例,用来限时运行任务,在规定的时间内,不论程序是否响应中断终止程序,还是没有响应到中断,我们都可以获取到通过调用这个方法获取结果,
也就是可以再规定的时间内获取到处理结果,对结果如何处理,那就可以自己定义
package cn.study.concurrency; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; /** * * @author xiaof * */ public class TimeCount { private static final ScheduledExecutorService cancelExec = Executors.newSingleThreadScheduledExecutor(); /** * * @param r 线程 * @param timeout 任务超时限定 * @param unit 时间单元 * @throws Throwable */ public static void timedRun(final Runnable r, long timeout, TimeUnit unit) throws Throwable { class RethrowableTask implements Runnable { //抛出的异常 private volatile Throwable t; @Override public void run() { try { r.run(); } catch (Throwable e) { this.t = e; } } /** * 当运行超时,或者程序运行正常退出的时候,后面进行控制的时候调用这个返回给调用者 * @throws Throwable */ void rethrow() throws Throwable { //这个t可以自己包装,或者返回其他数据,这个可以根据不同的业务来定 //这里甚至可以保持当前状态到本地,在下次运行的时候,先读取本地数据,恢复到当前状态,留到以后操作 if(t != null) throw t; } } RethrowableTask task = new RethrowableTask(); final Thread taskThread = new Thread(task); taskThread.start(); //启动外部线程 cancelExec.schedule(new Runnable() { public void run() { //启动中断异常 taskThread.interrupt(); } }, timeout, unit); //等待线程的终止,用来应对即使任务不响应中断,限定时间一到,最后仍可以抛出异常到这个方法的调用者 taskThread.join(unit.toMillis(timeout)); //抛出异常 task.rethrow(); } }

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

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.

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.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa