针握衡对这个问题可以在线程的run方法里,加一个判断标志。顷皮老例如:
class TestThread extends Thread{
public void run(){
while(isTrue){
//做你要做的事。}}}在需要关闭的时候,将flag置为false: isTrue=false并且将运行的线程对象挂起然后置为null(假设开启的线程对象为mTestThread) :
mTestThread.interrupt()
mTestThread=null
再次用到的时候进行雀升如下处理即可:
if(mTestThread==null){
这个好办闭皮,这里有两个线程吧,线程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所做的不止这些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)