android 强行关闭线程

privatefinalRunnablemSender=newRunnable(){publicvoidrun(){}};这样定义的线程,然后用另外一个线程来监控管理这个... private final Runnable mSender = new Runnable() {

public void run() {
}};
这样定义的线程,然后用另外一个线程来监控管理这个mSender ,问题是我 要强制结束mSender 时 怎么写。
mSender.* 只有wait()等方法 没有销毁挂起,是不是我的写法不对?
展开
 我来答
离墨颖6DoY
2012-11-15 · 超过17用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:28.6万
展开全部
这个好办,这里有两个线程吧,线程A 线程mSender。
设:让线程A,监视线程mSender
第一步:
在A中定义一个变量:ExecutorService transThread = Executors.newSingleThreadExecutor();
解释:transThread 官方名称是“单一线程池变量”,他是做什么的呢,它就像我们给A的一块赛车场,用来玩遥控赛车。
第二步:
在A中再定义一个变量: Future transPending;

解释:transPending就像我给A一个用来控制遥控赛车的遥控器一样
第三步:
在A中定义个线程mSender对象:
private final Runnable mSender = new Runnable() {

public void run() {
}};
解释:这是你写的对象,他就相当于我给A的一个遥控赛车。
第四步:
在A中添加如下语句:transPending = transThread.submit(mSender);

解释:这一步就相当于把赛车(mSender)放入场地(第一步中我们定义的transThread),并且用遥控器“transPending”来控制他。
(注:这里你是否会有疑惑,我没有写"mSender.start()"之类的语句怎么让我的赛车跑起来啊(运行run()方法),放心,有了“transPending = transThread.submit(mSender);”这一步,赛车是自动跑起来的,也就是mSender会自动调用run的。)

第五步:
现在你可以用遥控器“transPending”干很多事情了
transPending.cancel(true);无论线程现在是否运行中,立刻终止。
transPending.cancel(false);当前线程若没有运行(比如挂起状态)就终止它。
transPending所做的不止这些。
venia01
2012-11-15 · TA获得超过355个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:104万
展开全部
mSender只是一个普通的类哦,只不过里面的run方法是给准备开启的线程调用。
java里面的线程控制是通过Thread类,你看看Thread的API吧。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
netaliang
2012-11-15 · TA获得超过141个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:161万
展开全部
无法保证可以从外部终止线程运行,即使调用interrupt也无法保证有时机被执行。终止线程最正确的方法是内部自行结束,最简单和最工整的方法是在你的循环里增加一个是否需要终止的判断:

run() {
while(!isStop){
...
}

}

然后在外部线程改写isStop=true就ok.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xz10124551
2012-11-14 · TA获得超过600个赞
知道答主
回答量:256
采纳率:0%
帮助的人:60万
展开全部
我是营销软件站的 我能帮助你 给我分 采纳我答案
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式