当前位置:首页 » 安卓系统 » androidthread结束

androidthread结束

发布时间: 2022-09-13 10:58:07

Ⅰ android如何终止一个正在运行的子线程

线程像这样:
Thread{
boolean flag = fase;
run(){
while(!flag){
}
}
}
Thread t = new Thread();
t.start();
-----------------------------------------------------
要终止循环,只需要这样
t.flag=true;
================================================
还有一种方式 线程像这样:
Thread{
run(){
while(true){
Thread.sleep(xxxx);
}
}
}
Thread t = new Thread();
t.start();
--------------------------------------------
要终止循环,只需要这样
t.interrupte();
但是这里要注意调用的时机,要在子线程执行了run方法里面的sleep(xxxx)后xxxx时间之内调用。也就是子线程会睡一会,醒一会,睡一会,醒一会,要在子线程睡着的时候调用。

Ⅱ android开发怎么用代码结束进程

用一个公共boolean值做标记,需要结束的时候更改一下标记,如果线程处于阻塞,就调用interrupt()实现即时结束,如:

java">//定义一个公共boolean标记
booleanstop=false;

//线程的run方法
publicvoidrun(){
while(!stop){
try{
System.out.println("running");
Thread.sleep(5000);
}catch(InterruptedExceptione){
e.printStackTrace();
System.out.println("stop");
}
}
}

//如果要结束,在要结束线程的地方把stop的值改为true,
stop=true;

//因为是线程在阻塞,所以还要调用interrupt()抛出异常结束阻塞
myThread.interrupt();

Ⅲ android framework thread怎么停止

new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
...
}
}).start();
1234567891012345678910

当然,你也可以在Android中创建一个消息循环的HandlerThread
HandlerThread mThread = new HandlerThread("test");
mThread.start();
Handler mHandler = new Handler(mThread.getLooper()){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
}

};

Ⅳ Android 中如何停止一个线程

有三种方法可以结束线程:
1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止
2. 使用interrupt()方法中断线程
3. 使用stop方法强行终止线程(不推荐使用,可能发生不可预料的结果)
前两种方法都可以实现线程的正常退出,也就是要谈的优雅结束线程;第3种方法相当于电脑断电关机一样,是不安全的方法。

Ⅳ Android如何停止线程的方式

一种是调用它里面的stop()方法,另一种就是你自己设置一个停止线程的标记 (推荐这种)

如果使用Thread.stop方法停止线程,不能保证这个线程是否完整的运行完成一次
run方法;但是如果使用停止的标记位,那么可以保正在真正停止之前完整的运行完
成一次run方法;第二中方式,但是对于麻烦的动作,解决方式是这一个全局变量,每个复杂的动作都进行判断一下

Ⅵ Android怎么结束一个线程

在Java语言中,安全结束线程的方法就是“让线程的自身流程执行完”。
出现“僵尸线程”的原因:1.线程在死循环中执行。2.线程阻塞。

很明显,你的ReadHandlerThread线程发生了线程阻塞。

dis.readFully(b),你在这里调用了一个阻塞方法,由于socket的另一端一直没有发送数据,ReadHandlerThread线程一直阻塞在了这里,等待接收完136字节的数据。136字节没有接收完,readFully方法将一直处于阻塞状态。

解决方法,设置socket的等待超时值,而不是无限等待。

Ⅶ 如何终止 android线程池中的任务

  • 终止android线程池中的任务的方法

    1.实现Callable接口

    2.调用pool.submit()方法,返回futrue对象

    3.用future对象来获取线程的状态。



  • voidtest(){
    ExecutorServicepool=Executors.newFixedThreadPool(2);


    Callable<String>s=newCallable<String>(){

    @Override
    publicStringcall()throwsException{
    System.out.println("test");
    return"true";
    }
    };

    Future<String>f=pool.submit(s);

    System.out.println(f.isCancelled());
    System.out.println(f.isDone());
    f.cancel(true);


    }


Ⅷ android 为什么不建议使用Thread.stop

当调用Thread.stop()方法时,会发生以下两种事情:
1. 即可抛出ThreadDeath异常,在线程的run()方法里面,任何一刻都可能抛出ThreadDeath Error,包括在catch或者finally语句中。
2. 释放该线程的所有锁。
当线程抛出ThreadDeath异常时,会导致线程的run()方法突然返回来达到停止该线程的目的。这个异常可以在该线程run()任意一个执行点抛出。原则上只要一调用thread.stop()方法,线程会立即停止,并抛出ThreadDeath error,查看了Thread的源代码后才发现,原先Thread.stop0()方法是同步的,而我们工作线程的run()方法也是同步,那么这样会导致主线程和工作线程共同争用同一个锁(工作线程对象本身),由于工作线程在启动后就先获得了锁,所以无论如何,当主线程在调用thread.stop()时,它必须要等到工作线程的run()方法执行结束后才能进行。
因此,thread.stop()是不安全的,主要针对于于:释放改线程所持有的所有的锁,而锁的突然释放会导致被保护的数据的不一致性。
正确停止线程总结起来是以下三点:
1. 使用violate boolean 变量来表示线程是否停止;
2. 停止线程时,需要调用停止线程的interrupt()方法,因为线程有可能在wait()或者sleep(),提高停止线程的及时性;
3. 对于blocking IO的处理,尽量使用interruptibleChannel来代替 blocking IO。

Ⅸ Android 如何监听一个线程的开始和结束

方法一:轮询

比如主线程要等子线程在得到变量“val”值的时候开始用“val”的值来进行工作,这个比较简单。

方法二,回调
回调就是调用别的对象的方法时把“自己”传进去,然后别的对象在某个时候调用“自己的方法”

publicinterfaceThreadCallback{
voidthreadStartLisener();
voidthreadEndLisener();
}{
;
publicSubRunnable(ThreadCallbackthreadCallback){
this.mThreadCallback=threadCallback;
}
@Override
publicvoidrun(){
mThreadCallback.threadStartLisener();
for(inti=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+"dosomething"+i);
}
mThreadCallback.threadEndLisener();
}

}{
=newThreadCallbackTest();
publicstaticvoidmain(String[]args){
System.out.println(Thread.currentThread().getName()+"开始");
newThread(newSubRunnable(mThreadCallbackTest)).start();
}

@Override
publicvoidthreadStartLisener(){
System.out.println(Thread.currentThread().getName()+"线程,知道SubRunnable线程开始执行任务了");
}

@Override
publicvoidthreadEndLisener(){
System.out.println(Thread.currentThread().getName()+"线程,知道SubRunnable线程任务执行结束了");
}
}

Ⅹ android thread 后台线程 怎么设置随着主线程的结束而结束

关于线程的结束有以下几点:
1.不要手动调用stop方法强行终止一个线程,这种方式不安全。

通过帮助文档,我们可以知道,Android的线程类本身就提供了一些公共方法去结束线程。
final void stop()
This method is deprecated. because stopping a thread in this manner is unsafe and can leave your application and the VM in an unpredictable state
但是,通过说明我们可以看到,这些方法Android本身都是不推荐使用的,通过这种方式结束线程是不安全的。
2.线程里run函数短,执行完后线程会自行销毁,不用手动去终止。
3.手动停止,通过在run里设置标志先停止运行,再调用Thread.interrupt();注意,在run没有停止时调用.interrupt()没有效果。

热点内容
传奇荣耀脚本 发布:2025-01-07 05:53:14 浏览:979
为什么安卓手机连接不了苹果耳机 发布:2025-01-07 05:37:49 浏览:75
c语言mfc 发布:2025-01-07 05:33:18 浏览:592
自己搭建邮件服务器ddns 发布:2025-01-07 05:19:29 浏览:205
光驱无法访问指定设备 发布:2025-01-07 05:17:19 浏览:104
如何删除人人网的访问记录 发布:2025-01-07 05:02:47 浏览:281
清华编译原理第2版答案pdf 发布:2025-01-07 04:48:03 浏览:936
pythonweb框架对比 发布:2025-01-07 04:48:00 浏览:606
交叉编译应用程序示例 发布:2025-01-07 04:47:59 浏览:649
华为t系列存储 发布:2025-01-07 04:36:40 浏览:909