线程中断,抛出sleep异常

登陆界面编写,断点测试时报错,tomcat日志显示报错为:

java.lang.InterruptedException: sleep interrupted
        at java.base/java.lang.Thread.sleep(Native Method)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

断点如下

public class AccountServiceImpl implements AccountService {

    @Autowired
    private SystemAdminMapper systemAdminMapper;

    @Override
    public AccountDto login(AccountForm accountForm) {
        AccountDto dto =new AccountDto<>();
        //判断用户类型
        switch (accountForm.getType()){
            case "systemAdmin":
                SystemAdmin systemAdmin = this.systemAdminMapper.findByUsername(accountForm.getUsername());
                //判断用户名是否正确
       **断点:  **       if(systemAdmin == null){
                    dto.setCode(-1);
                } else {
                    //判断密码是否正确
                    if (!systemAdmin.getPassword().equals(accountForm.getPassword())){
                        dto.setCode(-2);
                    } else {
                        dto.setCode(0);
                        dto.setAdmin(systemAdmin);
                    }
                }
                break;
            case "drugAdmin":

                break;
        }
        return dto;
    }
}

代码不全吧

以下内容部分参考ChatGPT模型:


这个异常是因为在执行线程时,线程被中断了,导致了sleep方法抛出了InterruptedException异常。在你的代码中,这个异常是由于连接池中的线程被中断,而连接池中的线程通常是由连接池的实现框架提供的,所以你需要检查连接池的实现,看看是否有中断线程的操作,以及是否需要在代码中处理InterruptedException异常。

可以尝试在代码中捕捉InterruptedException异常,并在catch块中处理,例如打印日志,或者重新抛出异常。示例代码如下:

try {
    // 执行一些需要时间的操作
    Thread.sleep(1000);
} catch (InterruptedException e) {
    // 处理InterruptedException异常
    log.error("Thread interrupted while sleeping", e);
    Thread.currentThread().interrupt(); // 重新中断线程
}

另外,如果连接池的实现框架不支持中断线程,也可以通过设置线程的中断状态来实现线程的中断,例如:

Thread.currentThread().interrupt();

如果我的建议对您有帮助、请点击采纳、祝您生活愉快