当前位置: 首页 > news >正文

莱芜市莱城区城乡建设局网站免费二级域名生成网站

莱芜市莱城区城乡建设局网站,免费二级域名生成网站,typecho和wordpress哪个好,西安做网站程序JUC线程中断相关问题总结 线程中断相关问题总结 JUC线程中断相关问题总结一、 sleep 和线程中断之间的关系和特点结论测试验证代码如下 二、 LockSupport 和线程中断之间的关系结论测试验证代码如下 一、 sleep 和线程中断之间的关系和特点 结论 线程调用 Thread.sleep之后会进…

JUC线程中断相关问题总结

线程中断相关问题总结

  • JUC线程中断相关问题总结
    • 一、 sleep 和线程中断之间的关系和特点
      • `结论`
      • `测试验证代码如下`
    • 二、 LockSupport 和线程中断之间的关系
      • `结论`
      • `测试验证代码如下`

一、 sleep 和线程中断之间的关系和特点

结论

  1. 线程调用 Thread.sleep之后会进入休眠状态 , 当前线程被中断后(其他线程调用了当前线程的interrupt()方法) , 那么就会抛出异常 需要捕获sleep的异常 , 这个正在休眠的线程会被迫唤醒
  1. 休眠的线程被中断后 唤醒后 其中断标记位会重置为false (可通过 thread.isInterrupted() 方法来验证)

测试验证代码如下

public class InterruptDemo {public static void main(String[] args) throws InterruptedException {sleepInterruptThread();}/*** 1. 中断调用了sleep方法的进行休眠的线程** 输出结果:** 1.SleepInterruptThread|| false* ERROR==>抛出异常:sleep interrupted* 2.SleepInterruptThread|| false* 3.1683772273061|| false* 4.1683772275072|| 完成任务!** 结论:*  线程调用sleep后 被中断是会抛出InterruptException , 并且线程的中断标记位会重置为false*  因此再次休眠 不会抛出中断异常!**/private static void sleepInterruptThread() throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("1." + Thread.currentThread().getName() + "|| " + Thread.currentThread().isInterrupted());try {Thread.sleep(10000);} catch (InterruptedException e) {System.out.println("ERROR==>抛出异常:" + e.getMessage());System.out.println("2." + Thread.currentThread().getName() + "|| " + Thread.currentThread().isInterrupted());}System.out.println("3." + System.currentTimeMillis() + "|| " + Thread.currentThread().isInterrupted());try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("4." + System.currentTimeMillis() + "|| 完成任务!");},"SleepInterruptThread");t1.start();Thread.sleep(1000);t1.interrupt();}}

二、 LockSupport 和线程中断之间的关系

结论

  1. 被LockSupport.park 挂起的线程 在被中断后 也会被唤醒 但是和sleep的区别是 这个方法并不会抛出InterruptException异常
  1. 中断唤醒之后不会抛出异常 , 但是这个线程的中断标记位变为了true 并不会重置 (可通过 thread.isInterrupted() 方法来验证)

测试验证代码如下

测试LockSupport.park中断后的线程状态 , 还有中断后和sleep方法结合使用

public class LockSupportDemo {public static void main(String[] args) throws InterruptedException {// 1. 测试LockSupport挂起的线程 被中断是否抛出异常lockSupport();Thread.sleep(1000);System.out.println("=============================================");System.out.println("=============================================");System.out.println("=============================================");// 2. 测试LockSupport中断后和sleep方法一起使用lockSupportSleep();}/*** 1. 被LockSupport.park 挂起的线程 调用中断方法后并不会抛出异常 , 但是线程的中断标记位的确变为了true** 输出结果:** 1.LockSupportThread||false* 3.LockSupportThread||true* 2.LockSupportThread||true** 可以看到通过 LockSupport 挂起的线程在被中断后并不会抛出异常 但是中断标记位是改为了true**/private static void lockSupport() throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("1." + Thread.currentThread().getName() + "||" + Thread.currentThread().isInterrupted());// 将线程挂起LockSupport.park();System.out.println("2." + Thread.currentThread().getName() + "||" + Thread.currentThread().isInterrupted());// 如果后边跟上 Thread.sleep 则会抛出InterruptException异常 并重置线程中断标记位为false , 看下边 lockSupportSleep},"LockSupportThread");t1.start();Thread.sleep(500);t1.interrupt();System.out.println("3." + t1.getName() + "||" + t1.isInterrupted());}/*** 2. LockSupport中断线程后 和sleep方法结合使用** 输出结果:** 1.LockSupportSleepThread||false* 2.LockSupportSleepThread||true* 抛出异常==》sleep interrupted* 3.LockSupportSleepThread||false*/private static void lockSupportSleep() throws InterruptedException {Thread t1 = new Thread(() -> {System.out.println("1." + Thread.currentThread().getName() + "||" + Thread.currentThread().isInterrupted());// 将线程挂起LockSupport.park();System.out.println("2." + Thread.currentThread().getName() + "||" + Thread.currentThread().isInterrupted());// 如果后边跟上 Thread.sleep 则会抛出InterruptException异常 并重置线程中断标记位为false , 看下边 lockSupportSleeptry {Thread.sleep(1000);} catch (InterruptedException e) {System.out.println("抛出异常==》" + e.getMessage());System.out.println("3." + Thread.currentThread().getName() + "||" + Thread.currentThread().isInterrupted());}},"LockSupportSleepThread");t1.start();Thread.sleep(500);t1.interrupt();}}
http://www.zhongyajixie.com/news/49285.html

相关文章:

  • 营销型网站的目标百度非企渠道开户
  • 番禺做网站企业日结app推广联盟
  • asp access 手机站 用于做微网站百度指数app下载
  • 毕业设计 做网站网站首页面设计
  • 银川做网站最好的公司有哪些second是什么意思
  • 杭州做宠物网站的公司哪家好做网站多少钱一年
  • 计算机学院网站建设推推蛙网站诊断
  • 关于阅读类网站的建设规划书推广普通话的内容
  • 做团购的的网站有哪些迈步者seo
  • 电商网站首页代码优化设计英语
  • 营销型网站建设标准品牌推广公司
  • 搜索引擎网站的搜素结果有何区别西安网站建设比较好的公司
  • 济南企业网站设计公司营销外包团队怎么收费
  • 如何做网站在网上销售友情链接交换的意义是什么
  • 红河北京网站建设百度推广代理商返点
  • 什么网站做任务的q币新型网络营销模式
  • 网页设计与网站开发方向最佳bt磁力狗
  • flash做网站步骤域名服务器ip查询网站
  • 如何做原创漫画网站东莞网站建设
  • 开网站建设今日热点头条新闻
  • 怎么做网站排名优化网络营销推广工具
  • 做房产必知的发布房源网站搭建一个网站需要多少钱
  • 如何建设一个静态网站谷歌浏览器下载手机版官网中文
  • wordpress改变文章字体大小seo优化排名营销
  • 稳定的网络建站咨询电话腾讯企点官网下载
  • 国外网站怎么做引流西安seo外包行者seo06
  • 台州网站建设制作推广普通话手抄报图片
  • 外贸网站建设今日西安头条最新消息
  • 网站备案拍照背景图不属于网络推广方法
  • 跨境平台哪个最好做?seo网页推广