美文网首页
java 线程超时 中断线程

java 线程超时 中断线程

作者: 乘以零 | 来源:发表于2018-05-09 09:00 被阅读0次

设定一个线程最多运行3秒 超过3秒就中断 两种方法

1.用Future

final ExecutorService exec = Executors.newFixedThreadPool(1);
Future<Object> future = exec.submit(() -> {
    for (int i = 1; i <= 1000; i++) {
        System.out.println(i + "");
        Thread.sleep(1000L);
    }
    return null;
});
try {
    future.get(3000, TimeUnit.MILLISECONDS);
} catch (Exception e) {
    e.printStackTrace();
    future.cancel(true);//必须代码
}
System.out.println("end");

2.Thread.interrupt (严格来说没啥用 因为正常的逻辑代码中不会有Thread.sleep())

Thread t1 = new Thread(() -> {
    for (int i = 1; i <= 1000; i++) {
        System.out.println(i + "");
        try {
            Thread.sleep(1000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
            throw new RuntimeException(e); //必须抛出异常 不然还是会继续执行
        }
    }
});
t1.start();
try {
    t1.join(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
t1.interrupt(); //核心代码
System.out.println("end");

相关文章

  • java 线程超时 中断线程

    设定一个线程最多运行3秒 超过3秒就中断 两种方法 1.用Future 2.Thread.interrupt (严...

  • 线程中断

    什么是线程中断?线程中断即线程运行过程中被其他线程打断了。 线程中断的重要方法2.1 java.lang.Thre...

  • JAVA并发编程(三)线程协作与共享

    1. 线程中断 java线程中断是协作式,而非抢占式 1.1. 线程中断相关方法 interrupt()将线程的中...

  • 【多线程】——3.线程的中断

    线程中断的概念 java线程中断是一种协作机制 通过中断并不能直接终止线程的运行 需要被中断的线程自己处理中断 (...

  • (4)线程中断

    什么是线程中断 java中的线程中断并不是指强制线程中断执行,而是指调用线程中断起到一个通知作用,让线程知道自己被...

  • Java线程中断

    本文主要介绍Java线程中断一些相关的概念以及注意点 Java线程的中断并不是强制的中断,调用线程中断的方法时只是...

  • 线程中断

    Java的中断是一种协作机制,线程中断不会终止线程的运行,但是可以通过线程中断来实现终止线程运行。 线程在不同状态...

  • Java线程简介

    本文将介绍Java线程的状态、线程的中断、线程间通信和线程的实现。 线程的状态 Java语言定义了6种不同的线程状...

  • Java “优雅”地中断线程(原理篇)

    前言 线程中断系列文章: Java “优雅”地中断线程(实践篇)[https://www.jianshu.com/...

  • java多线程

    java多线程 线程类源码解读(2)-线程状态及常用方法 线程类源码解读(3)-线程中断 逐行分析AQS源码(1)...

网友评论

      本文标题:java 线程超时 中断线程

      本文链接:https://www.haomeiwen.com/subject/lbzgrftx.html