http://blog.csdn.net/yakihappy/article/details/3979912

反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,当在一个线程对象上调用stop()方法时,这个线程对象所运行的线程就会立即停止,假如一个线程正在执行:synchronized void { x = 3; y = 4;} 由于方法是同步的,多个线程访问时总能保证x,y被同时赋值,而如果一个线程正在执行到x = 3;时,被调用了 stop()方法,即使在同步块中,它也干脆地stop了,这样就产生了不完整的残废数据。而多线程编程中最最基础的条件要保证数据的完整性,所以请忘记线程的stop方法,以后我们再也不要说“停止线程”了。而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。

suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用 wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。

stop() 和 suspend() 方法为何不推荐使用相关推荐

  1. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

    答: 1.有两种实现方法,分别是继承Thread类与实现Runnable接口 继承扩展性不强,java总只支持单继承,如果一个类继承Thread就不能继承其他的类了. 2.用synchronized关 ...

  2. Java中有几种方法可以实现一个线程??用什么关键字修饰同步方法??stop()和suspend()方法为什么不推荐使用??

    1. Java中有几种方法可以实现一个线程?? 两种,分别是继承thread类和实现Runnable类接口. 第一种: new Thread(){}.start();这表示调用Thread子类对象的r ...

  3. java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法 ? stop() 和 suspend() 方 法为何不推荐使用?

    60 . java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法 ? stop() 和 suspend() 方 法为何不推荐使用? 答: 有两种实现方法,分别是继承 Thread类与实现Ru ...

  4. 为什么不推荐使用 stop、suspend 方法中断线程?

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者 | 浪舟子 来源 | https://blog.csdn.net/qq_40400960/article/details/ ...

  5. 为什么强烈不推荐使用stop、suspend方法来中断线程?

    点击关注公众号,实用技术文章及时了解  作者:浪舟子  blog.csdn.net/qq_40400960/article/details/112651249 我们知道像stop.suspend这几种 ...

  6. vue中v-for为何要加key?index为何不推荐作为key

    在使用vue组件的时候,我们经常会遇到v-for必须要加key值 来举个例子进行说明吧! 不存在key的情况 <!--* @Author: angula* @Date: 2020-08-07 0 ...

  7. java suspend_Java Thread suspend()方法

    Thread类的suspend()方法使线程无法运行到等待状态.如果要停止线程执行并在发生特定事件时再次启动,则使用此方法. 此方法允许线程暂时停止执行. 可以使用resume()方法恢复挂起的线程. ...

  8. javascript 终极循环方法for... of ..推荐

    js目前有很多的循环方法,如for, forEach,  for .. in,  for of 等等,而在ES6里面,我们又增加了一些数据结构,比如set,map,Symbol等. 那么我们该选取哪一 ...

  9. 面向交通预测的动态图卷积循环神经网络:基准和方法(重磅推荐)

    1.文章信息 <Dynamic Graph Convolutional Recurrent Network for Traffic Prediction: Benchmark and Solut ...

最新文章

  1. 五分钟DBA:浅谈伪分布式数据库架构
  2. jQuery中$.fn的用法示例介绍
  3. jpg图片转eps 用于LaTeX
  4. [密码学] 双重与三重DES
  5. Snapshot Instance 操作详解 - 每天5分钟玩转 OpenStack(36)
  6. Java基础---集合的概述---list、set、map、泛型、collections
  7. Spring Cloud Eureka(一)搭建一个注册中心
  8. iOS开发-UITableView常用方法
  9. AOJ-351-求最值之差
  10. HTML5期末大作业:影视视频网站设计——爱影评在线电影(10页面) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  11. 海思码率控制器各参数说明
  12. Windows 10注册表损坏该如何修复?
  13. dns配置异常怎么修复_dns配置异常不能上网如何修复
  14. 【BZOJ1135】【POI2009】Lyz
  15. Windows_Program_Via_C_Translate_Win32编程的背景知识/基础知识_包括基本输入输出机制介绍...
  16. 云主机创建网络失败:Unable to create the network. No tenant network is available for allocation.
  17. 解决错误代码:0xc000007b系统蓝屏问题
  18. 鸿蒙麒麟食华为的什么系统,你好,鸿蒙!华为自研系统真的来了,还有麒麟、朱雀...
  19. 基于JAVA实现GPG加密解密(Windows+java两种方式)
  20. 【数论】君と彼女の恋

热门文章

  1. 【数据结构与算法】之深入解析“Z字形变换”的求解思路和算法示例
  2. Python回调函数
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1075:药房管理
  4. 征战蓝桥 —— 2015年第六届 —— C/C++A组第4题——格子中输出
  5. python人工智能——机器学习——数据的降维
  6. 【Python2】Keras_ResNet 在Cifar10数据集上分类,Flask框架部署目标检测模型
  7. 【Linux网络编程】网络字节序和地址转换
  8. 【Linux】一步一步学Linux——ssh命令(176)
  9. redis 一般启动几个 哨兵_Redis 5.0.8 主从+哨兵的搭建
  10. Linux下串口编程基础