https://blog..net/persistencegoing/article/details/84376427

线程

(1)在catch(){} 中的语句要保证不会出现异常,或者catch中的语句再次捕获了异常,

( 2 ) 线程中try中的语句出现异常,会直接跳过try中的sleep,导致不停地循环

(3)线程的while循环中如果不适用try catch 会导致当出现异常时,线程直接挂掉,

package com.hlzt.wx.thread;

import java.util.Date;

import net.sf.json.JSONObject;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.util.StringUtils;

import com.hlzt.wx.model.global.WXGlobalVar;

import com.hlzt.wx.model.js_sdk.JsapiTicket;

import com.hlzt.wx.model.token.GlobalToken;

import com.hlzt.wx.util.token.GlobalAccessTokenUtils;

/**

* 全局access_token 定时刷新类

*

* @author Administrator

*

*/

public class GlobalAccessTokenThread extends Thread {

static Logger logger = LoggerFactory.getLogger(GlobalAccessTokenThread.class);

@Override

public void run() {

logger.info("################启动定时刷新token,刷新间隔时间为token超时时间的1/2");

// TODO Auto-generated method stub

refreshToken();

}

public void refreshToken() {

while (true) {

try {

String token=GlobalAccessTokenUtils.setAndGetAccessToken();

Thread.sleep(3600000);// 否则按半小时刷新

logger.info("###################"+3600000/1000+"s后重新刷新access_token");

} catch (Exception e) {

//此处捕获异常,当GlobalAccessTokenUtils.setAndGetAccessToken()方法出现异常,就会跳过sleep(),成为死循环

//但是当不捕获异常,即不用try catch 时,当出现异常时,此线程就会挂掉,不会再循环,所以线程中要捕获异常

e.printStackTrace();

// TODO Auto-generated catch block

logger.info("###################获取access_token异常");

}

}

}

希望大家关注我一波,防止以后迷路,有需要的可以加群讨论互相学习java ,学习路线探讨,经验分享与java求职      群号:721515304

java sleep异常_java 注意线程下的 异常捕获,sleep(10000)休眠,可能会出现***循环...相关推荐

  1. java 到异常_java编程中遇到的异常以及异常的一些处理

    n 异常的概念 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户? 比如除法运算.读写文件操作,都可能 ...

  2. java 提高篇_java提高篇(十六)-----异常(一)

    Java的基本理念是"结构不佳的代码不能运行"!!!!! 大成若缺,其用不弊. 大盈若冲,其用不穷. 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考 ...

  3. java代码抛出异常_Java中编写代码出现异常,如何抛出异常,如何捕获异常

    异常的产生过程解析 先运行下面的程序,程序会产生一个数组索引越界异常ArrayIndexOfBoundsException.我们通过图解来解析下异常产生的过程. 工具类 classArrayTools ...

  4. java单元测试测试异常_Java单元测试中出现意外异常

    我真的是JUnit的新手和一般的单元测试,我很难找到合适的方法.处理意外异常的更好方法是什么?为什么? 方法A: 首先捕获预期的,通过消息测试失败 在最后一个catch块中,捕获一般异常并使测试失败并 ...

  5. java简单的异常_Java的简单理解(8)-异常(Exception)

    Java 异常处理 异常处理机制是Java语言中一个独特之处,它为开发稳定的软件系统提供了有力的支持.它主要使用捕获异常和声明抛弃异常两种方法来处理程序中可能出现异常的语句块,其中捕获异常的方法是一种 ...

  6. java常见的5个异常_java常见的5种异常举例

    在Java学习过程中,我们会碰到各种各样的异常,现将面试过程中遇到的常见异常做一罗列并举例: 1.NullPointerException: 空指针异常.菜鸟编程经验发现这个异常是经常会发生的,属于运 ...

  7. java多线程通信_Java多线程-线程通信

    原标题:Java多线程-线程通信 通信的方式 要想实现多个线程之间的协同,如:线程执行先后顺序.获取某个线程执行的结果等等.涉及到线程之间的相互通信,分为下面四类: 文件共享 网络共享 共享变量 JD ...

  8. java singleton 多线程_Java创建线程安全的单例singleton

    Java创建线程安全的单例 单例的使用场景 JVM中仅需要一个实例,因此能节省内存,加快访问速度,比如数据库连接池,计数器等.Spring 中的Bean,默认也是单例的,共享资源的访问,比如日志文件, ...

  9. java阻塞超时_JAVA防线程阻塞(超时控制)

    2.[代码]TimeoutThread /** * java线程超时控制的实现 * * 超时控制一般使用阻塞时间比较长的操作上,有可能是和远程数据库的连接,也有可能是网络下载,在程序超时后, 往往需要 ...

最新文章

  1. 飞机上一般是什么操作系统?
  2. oracle服务怎么删除数据库,Oracle中手动删除数据库教程
  3. python 异或加密字符串
  4. java异常基本知识
  5. [它山之石] 一件事情,假设你不能说清楚,十有八九你就做不好
  6. 95-290-362-源码-内存管理-Buffer-LocalBufferPool
  7. 2012二级java真题_2012年计算机二级JAVA模拟试题及答案详解汇总
  8. 并行循环和嵌套循环_并行嵌套循环连接–嵌套循环连接和残留谓词的内侧
  9. 利用Matlab求解函数导数并绘图
  10. gp数据库运维:远程登录 杀进程
  11. 电脑版微信每天自动发送
  12. ESP32C3 CORE+PIO+lvgl显示
  13. wo-27s管理员账户和密码_“无法使用内置管理员账户打开”应用
  14. QT 获取键盘组合键
  15. 线上抓娃娃机火了三个月了,你玩了吗?
  16. 20.RTSP取流实现方法
  17. python discuz论坛帖子_[Scrapy爬虫实战]Discuz论坛版块内全部帖子获取
  18. float与double的MAX-MIN
  19. DPU — Overview
  20. ureport2报表详细使用(三)-添加数据集

热门文章

  1. 如何在其他电脑不登陆谷歌前提下获取之前所收藏的书签
  2. 苹果uwb_苹果2020年将发布3款基于UWB高精度定位技术的新iPhone
  3. word设置页码(不同分节符的页码设置)(全网最超级详细)
  4. ip地理位置查询易语言代码
  5. 服务器设置静态文件路径,静态文件服务器路径怎么配置好
  6. 尼尔森:“三高”农业品牌 更易得中产新女性青睐
  7. Android之增长的数字
  8. CSS字体样式值,背景属性
  9. 抖音帐号注册需要注意什么
  10. 【半个月实践】普通人如何利用ChatGPT变现?(附镜像网站)