永发信息网

Java中关于thread的停止问题

答案:3  悬赏:80  手机版
解决时间 2021-04-22 10:38

我定义了一个线程thread one·······

使用one.start();

后,我使用 one.stop();

的话,能使程序运行正常,但会出现

=============

--------------------Configuration: <Default>--------------------
注意:laohuji.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。

Process completed.
==============

我使用的是JCreator

但是我若使用one.interrupt();

的话,就没有了警告,但程序就有bug出来(bug出来的原因就是上一次的one没被终止,线程one变成了两个同时在进行·),stop()的方法在新版中究竟是什么啊~?

最佳答案
stop@Deprecated public final void stop(Throwable obj)

已过时。 该方法具有固有的不安全性。请参阅 stop() 以获得详细信息。该方法的附加危险是它可用于生成目标线程未准备处理的异常(包括若没有该方法该线程不太可能抛出的已检查的异常)。有关更多信息,请参阅为何 Thread.stop、Thread.suspend 和 Thread.resume 遭到反对?。


强迫线程停止执行。

如果安装了安全管理器,则调用该线程的 checkAccess 方法,这可能引发 SecurityException(在当前线程中)。

如果该线程不同于当前线程(即当前线程试图终止除它本身以外的某一线程),或者 obj 不是 ThreadDeath 的一个实例,则安全管理器的 checkPermission 方法(带有 RuntimePermission("stopThread") 参数)也会被调用。此外,这可能抛出 SecurityException(在当前线程中)。

如果参数 obj 为 null,则抛出 NullPointerException(在当前线程中)。

无论该线程在做些什么,它所代表的线程都被迫异常停止,并抛出 Throwable 对象 obj,作为一个异常。这是一种不正常的操作,通常情况下,应使用不带任何参数的 stop 方法。

停止一个尚未启动的线程是允许的。如果最后启动了该线程,它会立即终止。






参数:
obj - 要抛出的可抛出对象。
抛出:
SecurityException - 如果当前线程不能修改该线程。
另请参见:
interrupt(), checkAccess(), run(), start(), stop(), SecurityManager.checkAccess(Thread), SecurityManager.checkPermission(java.security.Permission)

现在中断线程应该是用的interrupt,或者直接close掉


你可以看看JAVA中API的Thread的介绍

全部回答

避免让线程不正常退出是最好的,如何可以,重新构造程序结构吧~

stop造成死锁,已经被废除了,现在大部分是设置flag

如果是持续运行的话,在run里面while(flag){},想停止设置未false就可以了

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
DNF中圣骑怎么加点还有穿什么装备
华芝堂医药NO.33地址有知道的么?有点事想过
是否应该赔赏我亲属经济损失费
青岛什么地方有典当铺子?
有没有单身男女相亲的啊?
如果.. 我该怎么办
清平中心幼儿园地址在什么地方,想过去办事
为什么很多事是在酒上谈成?
《王刚讲故事》晚上哪个台,几点开始演?每天
这药喝多长时间
口加个各读什么字
索爱CDA码
李啸天多大了
古丽烧烤满族铜火锅在哪里啊,我有事要去这个
嘴巴抽风是什么原因引起的?
推荐资讯
板的钢筋怎么计算公式,如何计算股票上涨或者
描写西湖的诗句(有作者、题目、朝代)
硕士毕业家长寄语,毕业寄语如何写
史上最短的歇后语,十句歇后语,字最少的
世界男首富当中谁最年轻?
CF水晶头巾可以累计时间吗
生命从何而来
青宁拜依地址在什么地方,想过去办事
我是农历一九九二年三月二十九出生的,请塔罗
vista 怎样开启网络访问保护服务
初一六班运动会口号,初一六班运动会口号,有
为什么女生不喜欢太胖呢??
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?