哆啦日志
  • 源码
    • 编程随想
    • 研发
    • 研发之外
    • 备忘
  • 建站相关
    • 经验福利
    • 杂谈
  • 互联网
    • 计算机科学
    • 数据结构与算法
    • Linux
    • 服务器
    • 数据库
  • 留言板
    • 哆啦文档
    • 工具箱
    • 音乐盒子
    • 笑话
    • 搜罗
    • 过时
  • 友链
    • 关于
    • 赞助
  • 任意门
【今日笑话】20190422
 2019-04-22      790      0
【今日笑话】20190421
 2019-04-21      785      0
【今日笑话】20190420
 2019-04-20      761      0
【今日笑话】20190419
 2019-04-19      612      0
【今日笑话】20190418
 2019-04-18      681      0
【今日笑话】20190417
 2019-04-17      772      0
【今日笑话】20190416
 2019-04-16      763      0
【今日笑话】20190415
 2019-04-15      798      0
【今日笑话】20190414
 2019-04-14      662      0
【今日笑话】20190413
 2019-04-13      553      0
【今日笑话】20190412
 2019-04-12      350      0
【今日笑话】20190411
 2019-04-11      746      0

文章导航

页 1 页 2 … 页 14 下一页
       


Joke-Tip

昨晚在夜店遇见一个身材巨好的妹子。 一来二去,她用诱惑的声音向我呢喃:“想不想带我去个安静点的地方啊?” 二十分钟后,她离开了,我独自坐在图书馆,不知道自己究竟哪里做错了…

Code-Tip

【Java】线程中断由业务代码来协作完成,慎用 Thread.interrupt方法

说明:优先使用协作式的线程同步机制,如j.u.c包中的各种synchronizer,加锁的共享变量、 volatile共享变量等,来通知一个线程中止作业。 慎用Thread.interrupt方法,它使文件句柄被强 制关闭,注意此时的文件句柄不是被程序代码调close方法关闭的,此时程序代码是不知道文件句 柄被关闭的,如果其他地方继续调用文件的其他方法,就会导致莫名奇妙的IO异常。强制关闭文件句柄的代码参见:java.nio.channels.spi.AbstractInterruptibleChannel#begin。 当应用 Thread.interrupt方法时,注意如下用法。

如果需要一个线程让另一个线程中止执行,Java API推荐的方式是,让被中止的线程在运行中周 期性地查询自己是否被中止。如果发现自己被中止,则应当主动清理状态并中止执行,而不是忽 略请求继续执行。 可以使用Thread.interrupt()方法请求另一个线程中止,线程本身用 Thread.interrupted()方法检查自己是否被中止。注意,不可以使用 Thread.current().isInterrupted()检查自己是否被interrupt,因为isInterrupted()不会 清除一个线程的interrupted status。 检测到当前线程被interrupt后,应抛出 InterruptedException,并在finally或try-with-resource中清理执行状态。

InterruptedException应不断上抛,直至线程中止。 因此,根据Java语法,能抛此异常的函数要标注throws InterruptedException。但如果因为实现指定的接口(如线程入口 Runnable.run())而无法抛出InterruptedException, 则按接口要求特殊处理。记住,调用Thread.interupt()的线程希望当前线程尽快停止。

近期评论

  • 皮儿面包发表在《纯代码实现WordPress文章页展开折叠功能》
  • 小飞飞发表在《【收集】介绍几个不错的后端干货公众号》
  • doctorrm发表在《留言板》
  • Edipse发表在《迅雷下载的原理》
  • Edipse发表在《留言板》
粤ICP备17163424号 | Copyright © 2018-2019 编程日志