首页 > 编程语言 >java 从外部强制结束死循环代码

java 从外部强制结束死循环代码

时间:2023-08-07 10:13:33浏览次数:42  
标签:MyRunnable java Thread thread public 线程 强制 死循环

public class ThreadTimeoutExample {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());

        thread.start();  // 启动线程

        try {
            thread.join(3000);  // 等待线程执行,设置超时时间为3秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        if (thread.isAlive()) {  // 判断线程是否还活跃(未完成)
            thread.interrupt();  // 强行终止线程
            System.out.println("Thread Timeout");
        } else {
            System.out.println("Thread Completed");
        }
    }

    static class MyRunnable implements Runnable {
        @Override
        public void run() {
            // 在这里编写你的线程逻辑
            // 例如,执行某个耗时操作
            try {
                Thread.sleep(5000);  // 模拟耗时操作,将这句写成死循环即可实现
            } catch (InterruptedException e) {
                // 线程被中断,可根据需要进行处理
                return;
            }
            // 其他逻辑...
        }
    }
}

将你认为可能产生了死循环或者死锁的代码放在这个新线程中执行,如果有参数给 MyRunnable 定义一个构造函数,将参数传递过去。

当然这个方法并非正常处理方案,最佳方案仍然是找到有死循环或死锁的逻辑,将它解决掉。但有时也讲究效率,据说这种强制结束线程的办法也有很多弊端,看你怎么取舍了

 

标签:MyRunnable,java,Thread,thread,public,线程,强制,死循环
From: https://www.cnblogs.com/nanfei/p/17610717.html

相关文章

  • JAVA学习路线
    参考路线:初级阶段Java语言基础在Java语言基础部分,你将学习Java语言的基本语法、数据类型、变量和运算符等知识。这些内容可以使用任何Java集成开发环境(IDE)进行学习,如Eclipse、IntelliJIDEA或NetBeans。数据库基础数据库基础部分将介绍SQL语法、数据库设计和基本的CRUD操作。你可以......
  • java 用法记录
    1.列表拼接成字符串#1.1Stringresult=Joiner.on("_").join(list);#1.2Stringresult=list.stream().collect(Collectors.joining("_"));2.Java8的foreach()中使用return/break/continueforeach()处理集合时不能使用break和continue这两个方法可以试用return实现co......
  • 【Java】从头开始的Java复建day1
    用的书:《Java从入门到精通》前两章跳过了第三章Java语言基础3.1Java主类结构包声明导入api类库eg.importxxx;声明类声明成员变量和局部变量编写主方法//包声明//必须在Number包中才能写一这行packageNumber;//必须要和.class文件名一致,不如说这里就是要写......
  • Java实现本地缓存的几种方式
    一、概况引入缓存,主要用于实现系统的高性能,高并发。将数据库查询出来的数据放入缓存服务中,因为缓存是存储在内存中的,内存的读写性能远超磁盘的读写性能,所以访问的速度非常快。但是电脑重启后,内存中的数据会全部清除,而磁盘中的数据虽然读写性能很差,但是数据不会丢失。目的主要为了重......
  • 异步请求返回处理之finally的用途,代码规范摸索【玩转JavaScript】
    前言最近在改动老代码时,发现了一个有趣的现象。对于异步请求返回结果处理中,使用finally做兜底处理,不同的页面并不统一,也就是有的页面使用了,有的页面没使用,没使用的页面增加了额外的失败的处理。所以finally到底要不要统一?本着代码规范化原则的思维,我准备一探究竟。文章速度finally......
  • 【JavaScript17】eval函数
    eval本身在js里面正常情况下使用的并不多.但是很多网站会利用eval的特性来完成反爬操作.我们来看看eval是个什么鬼?从功能上讲,eval非常简单.它和python里面的eval是一样的.它可以动态的把字符串当成js代码进行运行.vars="1+2+3+4+5+6+7+8";varc=eval(s);//帮你......
  • Java数组
       ......
  • 【JavaScript16】定时器
    在JS中,有两种设置定时器的方案1、setTimeout//语法规则t=setTimeout(函数,时间)//经过xxx时间后,执行xxx函数//m是第几个定时器varm=setTimeout(function(){console.log("我叫xwl");},5000);//单位是毫秒console.log("正常执行的....");......
  • 【JavaScript15】闭包
    什么是闭包闭包(closure)是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰,即形成一个不销毁的栈环境。闭包的特性:函数嵌套函数内部函数可以访问外部函数的变量参数和变量不会被回收。为什么要有闭包?1、先来看一段代码发现没有......
  • 【JavaScript14】函数基础
    函数定义函数定义的方法有多种,主要分为函数声明和函数表达式//函数声明functionfunc(arg1,arg2){console.log("arg1=",arg1);console.log("arg2=",arg2);return"返回一些东西"}varret=func("苹果","鸭梨");console.log(......