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

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

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

2个回答

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐