如何正确停止一个线程

 我来答
野人无事不言L
2016-12-03 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:144.8亿
展开全部
楼主, 你虽然有很多个任务相同的线程,但其实这N个线程并不是同一个对象,
就好像,
人是一个类,有湖南,湖北,广东,广西人,
每个人都有一个身份标志。
你把湖南人的标志改了并不会影响到湖北人! 虽然他们都在同一个工地上干同样的活,虽然它们都是妈生的

所以本例中,N多个线程对象生成,并启动后一个一个都是单独的对象,在单独的运行空间里跑。表面上看起来是相同的任务,其实是不相同的
boolean runflag=true; 这个标志每个对象都有一个,你改变了其中一个以后,其它线程并不会受到影响;

那么如果我就是想达到改变一次就能停止所有线程呢? 方法是将runflag给设成static即 public static runflag=true;
这样这个runflag只会生成一次。改变一次就会影响全部对象。
就好像,湖南湖北人都只有一个祖国, 国家富强了,所有人都受益

如果要用id来管理线程也是可以的,用Hashtable来存储线程,Hashtable需要一个主键key,你在线程对象内生成一个不可能重复id传给它做主键就行了。
但即使这样,也不要随便使用sun不推荐使用的stop()方法停止线程,这样会造成很多不可预料的后果。 而还是应该使用改变runflag的形式
即:
myThread mt=(myThread)hashtable.get(id);
mt.runflag=false;

希望对你有所帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式