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

中国建设银行官方网站纪念钞预约网络推广公司经营范围

中国建设银行官方网站纪念钞预约,网络推广公司经营范围,手机优化电池充电是什么意思,软文广告平台1、正常运行结束 程序运行结束,线程自动结束。 2、使用stop方法强制终止 不安全,不建议使用: 调用 stop() 方法会立刻停止 run() 方法中剩余的全部任务,包括在 catch 或 finally 语句中的,并抛出ThreadDeath异常&a…

1、正常运行结束

程序运行结束,线程自动结束。

2、使用stop方法强制终止

不安全,不建议使用:

调用 stop() 方法会立刻停止 run() 方法中剩余的全部任务,包括在 catch 或 finally 语句中的,并抛出ThreadDeath异常,因此可能会导致任务执行失败。

调用 stop() 方法会立即释放该线程所持有的所有的锁,导致数据得不到同步,出现数据不一致的问题。一般任何进行加锁的代码块,都是为了保护数据的一致性,如果在调用 thread.stop() 后导致了该线程所持有的所有锁的突然释放(不可控制),那么被保护数据就有可能呈现不一致性,其他线程在使用这些被破坏的数据时,有可能导致一些很奇怪的应用程序错误。因此,并不推荐使用stop方法来终止线程。

3、 使用volatile标记位退出线程

定义了一个退出标志exit,当exit为true时,while循环退出,exit的默认值为false。在定义exit 时,使用了一个 Java 关键字 volatile,这个关键字的目的是使 exit 同步,也就是说在同一时刻只能由一个线程来修改exit的值

public class ThreadSafe extends Thread { public volatile boolean exit = false;  public void run() {  while (!exit){ //do something } }  
}

4、使用 interrupt ()方法终止线程

在Thread中提供了一个interrupt()方法,从名字看表示中断,但实际上并不像stop()方法一样直接中断线程,而是向子线程发送一个中断的通知。至于目标线程收到通知后会如何处理,则完全由目标线程自行决定。与interrupt()相配合的就是isInterruptted(),功能是判断是否收到了可以中断的请求。

使用interrupt()方法来终止来终止线程分为两种情况:

1)线程处于阻塞状态,如果线程是sleep,join和waiting等阻塞状态,此时没有获得CPU时间片,也就无法及时感知到isInterrupted状态的变化。当调用线程的interrupt()方法时,会抛出InterruptException异常。阻塞中的那个方法抛出这个异常,通过代码捕获该异常,然后break跳出循环状态,从而让我们有机会结束这个线程的执行。很多人认为只要调用interrupt方法线程就会结束,实际上是错的, 一定要先捕获InterruptedException异常之后通过break来跳出循环,才能正常结束run方法。

2)线程未处于阻塞状态,使用isInterrupted()判断线程的中断标志来退出循环。当使用interrupt()方法时,中断标志就会置true,和使用自定义的标志来控制循环是一样的道理。

为什么要区分进入阻塞状态和和非阻塞状态两种情况了,是因为当阻塞状态时,如果有interrupt()发生,系统除了会抛出InterruptedException异常外,还会调用interrupted()函数,调用时能获取到中断状态是true的状态,调用完之后会复位中断状态为false,所以异常抛出之后通过isInterrupted()是获取不到中断状态是true的状态,从而不能退出循环,因此在线程未进入阻塞的代码段时是可以通过isInterrupted()来判断中断是否发生来控制循环,在进入阻塞状态后要通过捕获异常来退出循环。因此使用interrupt()来退出线程的最好的方式应该是两种情况都要考虑。

public class ThreadSafe extends Thread {public void run() {while (!isInterrupted()){ //非阻塞过程中通过判断中断标志来退出 try{ Thread.sleep(5*1000);//阻塞过程捕获中断异常来退出 }catch(InterruptedException e){ e.printStackTrace(); break;//捕获到异常之后,执行break跳出循环 } } }  
} 



 

http://www.hyszgw.com/news/12609.html

相关文章:

  • 一级做a爱免费网站seo公司运营
  • 中国加盟网首页百度网站关键词优化
  • 网站建设与维护txt下载今天新疆新闻头条
  • 珠海网站建设公司哪个好最新新闻消息
  • 垫江网站建设报价sem培训班学费哪个好
  • 中国企业信用网安卓aso关键词优化
  • 温州市网站制作公司域名归属查询
  • 旌阳移动网站建设个人怎么在百度上打广告
  • 自己做网站买东西宜兴网站建设
  • 烟台网站建设公司谁能给我个网址
  • 品牌网站建设内容百度一下百度
  • 知名网站有哪些免费网络营销方式
  • 网页设计与网站建设有区别吗搜索引擎推广培训
  • 给你一个网站你怎么做的吗广东网站优化公司
  • 网站架构设计图怎么做百度应用商店app下载
  • 山东省建行企业网站甘肃seo技术
  • 网站运营的作用微商怎样让客源主动加你
  • 静态网站开发课程模板小程序定制开发公司
  • 如何制作个人网站北京百度科技有限公司电话
  • 公众号怎么发布利于seo的建站系统有哪些
  • 目前做汽配的网站有哪些国内重大新闻
  • 网络营销师待遇怎么样武汉seo网站优化
  • 网站开发及设计营销软文推广平台
  • 栾城区城乡建设局网站seo关键词优化要多少钱
  • 自己做链接网站国内最新新闻热点事件
  • 云溪网络建站宝盒抖音怎么推广
  • 深圳电商网站设计百度推广怎么注册账号
  • 加强统战门户网站建设上海高端seo公司
  • 莘庄做网站百度站长工具平台登录
  • 网站腾讯qq对话框怎么做附近有没有学电脑培训的