hgq0916
奔腾的野马
采纳率65.9%
2017-08-03 08:51 阅读 2.6k
已采纳

关于Java的线程的stop方法为什么不推荐使用

反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。

网上查到资源是这么说的,那么什么叫“对象处于一种不连贯状态”,那么其他线程能在那种状态下检查和修改它们这句又怎么理解?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    zy841958835 cloudyzhao 2017-08-03 09:44

    假如一个线程正在执行:synchronized void { x = 3; y = 4;} 由于方法是同步的,多个线程访问时总能保证x,y被同时赋值,而如果一个线程正在执行到x = 3;时,被调用了 stop()方法,即使在同步块中,它也干脆地stop了,这样就产生了不完整的残废数据。而多线程编程中最最基础的条件要保证数据的完整性

    点赞 4 评论 复制链接分享
  • meicuojiushiwoi meicuojiushiwoi 2017-08-03 09:06

    就是有一个热水器(对象),本来调的是热水(就是指对象的属性),但是这个洗澡的人临时突然有事就出去了,没有继续占用这个热水器,接着下一个进来的人就不想洗热水,把热水调成了冷水,这时这个对象属性就发生了改变,就是这种改变,就是所谓其他线程修改了对象

    点赞 评论 复制链接分享

相关推荐