原文地址:为什么不推荐使用stop和suspend这两个方法?作者:傲九
JDK1.0定义了stop和suspend方法,stop用来直接终止线程,suspend会阻塞线程直到另一个线程调用resume.
      stop和suspend都有一些共同的点:都试图专横的控制一个给定了的线程的行为.

从JDK1.2开始,这两个方法都被弃用了.stop天生就不安全,而经验告诉我们呢suspend方法会经常导致死锁。

stop这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。假如一个方法在将钱从一个账户转移到另一个账户的过程中,在取款之后存款之前就停止了。那么现在银行对象就被破坏了。因为锁已经被释放了。当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象被破坏。所以这个方法被弃用了。你应该中断一个线程而不是停止他。

suspend不会破坏对象。但是,如果你用一个suspend挂起一个有锁的线程,那么在锁恢复之前将不会被释放。如果调用suspend的方法线程试图取得相同的锁,程序就会死锁。

那么在程序中该怎么样使用线程呢?建议如下:
(1)最好不要使用Lock/Condition也不使用synchronized关键字。在很多情况下你可以使用java.util.concurrent包中的一种机制,它会为你处理所有的加锁。例如阻塞同步队列。
(2)如果synchronized关键字在程序中可以工作,那么就尽量使用它,这样可以减少代码数量和出错的几率。
(3)只有在非常需要Lock/Condition结构特性的时候才使用他们。

 青春就应该这样绽放  游戏测试:三国时期谁是你最好的兄弟!!  你不得不信的星座秘密

[转载]为什么不推荐使用stop和suspend这两个方法?相关推荐

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

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

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

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

  3. Linux不是Windows(转载,强烈推荐)

    呵,呵,最近也许是受VISTA刺激了,在家里的笔记本天天用KUBUNTU,有感于在 forum.ubuntu.org.cn 上看到的那些初次安装使用UBUNTU的朋友说话的口气,今天在"源创 ...

  4. ccboot最新服务器配置,转载:CCBOOT推荐配置

    转载:CCBOOT推荐配置 (2011-04-18 14:30:04) 标签: 杂谈 文章来自:www.52diaobao.com 服务器要求大大降低,假如终端是1G 内存,那服务器回写压力会轻微高点 ...

  5. 转载:微博推荐算法简述

    本文来自于:http://www.wbrecom.com/:图就不贴了,有兴趣去看原文. 在介绍微博推荐算法之前,我们先聊一聊推荐系统和推荐算法.有这样一些问题:推荐系统适用哪些场景?用来解决什么问题 ...

  6. mysql数据库导入到excel表格数据_[转载]将EXCEL表格中的数据导入mysql数据库表中(两种方法)...

    今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命上网查阅方法,发现以下两种方法比较可行: 在此之前先说说按照网上的说法我没有试验成功的方法,将excel文件xls保 ...

  7. html怎么样取jsp中的路径,jsp中获得路径的两种方法和获得url路径的方法(推荐)

    是解决相对路径的问题,可返回站点的根路径. //这样获得的是绝对路径 //这样获得的是相对路径 能够更有效的防治连接的失效. request.getContextPath()得到的是项目的名字,如果项 ...

  8. 【转载】C++创建对象的两种方法

    原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param ...

  9. php ajax jquery 表单重复提交,jQuery的 $.ajax防止重复提交的两种方法(推荐)

    下面给大家带来两种关于jquery 的ajax防止重复提交的解决方法,具体介绍如下所示: 1.第一种,对于onclick事件触发的的ajax 可以采用如下方法: 即在beforeSend中使点击按钮不 ...

最新文章

  1. 动态规划 最小编辑代价
  2. python mysql批量更新_Python批量删除mysql中千万级大量数据的脚本分享
  3. 客座编辑:杜小勇(1963-),男,博士,中国人民大学信息学院教授、博士生导师。...
  4. Linux终端嵌套桌面里,linux下终端分屏使用的两种方法(screen和tmux)
  5. java clone原理_cloneAble接口实现clone()原理
  6. IP实时传输协议RTP/RTCP详解
  7. 有趣的算法(六):3分钟看懂插入排序(C语言实现)
  8. Linux之DHCP服务及配置
  9. 四十三、配置防盗链、访问控制Directory、访问控制FilesMatch
  10. python snownlp了解_[Python][snownlp]基于情感词典的情感分析
  11. recv函数的返回值梳理
  12. ACM-ICPC 2018北京网络赛-A题 Saving Tang Monk II-优先队列
  13. pl2303 USB转串口驱动
  14. 服务器系统怎么设置从光盘启动,电脑BIOS怎么设置光盘启动 三种类型BIOS设置光驱启动的图文详解教程...
  15. 利用武汉理工大学学校图书馆资源查论文 以使用中国知网查阅论文
  16. [转载]三、二、一 …… Geronimo!,第 2 部分: 构建 Geronimo
  17. VBA金额转换中文大写(原创新解版)
  18. 工作三年的Java程序员该如何规划后续的职业发展?
  19. RocketMQ-Retry
  20. C语言的 字符串 和 字节串 互转

热门文章

  1. 作为程序员,你会变身 TF boys 吗?
  2. 一名优秀的开发人员,空闲时间会敲代码吗
  3. SEED实验系列:缓冲区溢出漏洞试验
  4. 问题 | list(set(list))如何实现顺序不变
  5. html 占用空间 滚动轴_滚动轴承润滑及密封,轧机轴承技术(104)
  6. 订单操作-表结构分析与表创建
  7. InputStreamReader介绍代码实现
  8. 七牛云存储:通过SDK上传图片
  9. SpringBoot_web开发-thymeleaf语法
  10. android相册拍照剪切上传封装,安卓,图片裁剪上传真机测试好使,打包后显示:无法保存裁剪的图像...