终止线程的方式

1.使用退出标志退出线程:有些线程是伺服线程。它们需要长时间的运行,只有在外部某些条件满足的情况下,才能关闭这些线程。设一个 boolean 布尔类型的标志,并通过设置这个标志为 true 或 false 来控制 while 循环是否退出(该标志需要被Volatile修饰,目的:让该标志同步)

2.Interrupt 方法结束线程
1.线程处于阻塞状态,使用interrupt()方法会抛出异常。通常很多人认为只要调用 interrupt 方法线程就会结束,实际上是错的, 一定要先捕获 InterruptedException 异常之后通过 break 来跳出循环,才能正常结束 run 方法。(桌面文章)
2.线程处于非阻塞状态:使用 isInterrupted()判断线程的中断标志是否为ture来退出循环。当使用interrupt()方法时,中断标志就会置 true,和使用自定义的退出标志来控制循环是一样的道理

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

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值