android 如何结束一个线程】的更多相关文章

总结: 1 不推荐直接调用onstop()强制结束,,因为不安全 2 run()比较短暂,执行完毕会自动停止 3 在run()设置一个flag标识,满足条件才执行; 4 通过sleep()捕获异常,在调用 thread.intertupt();…
/** * Created by JuTao on 2017/2/4. * 如何中止一个线程 */ public class ThreadDone { public static void main(String[] args) throws InterruptedException { MyRunnable myRunnable=new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start(); Thread.sl…
大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Thread.Abort方法后线程就立刻停止了吗? 答案是:不是! 下面我们来解释一下Abort方法是如何工作的.因为公用语言运行时管理了所有的托管的线程,同样它能在每个线程内抛出异常.Abort方法能在目标线程中抛出一个ThreadAbortException异常从而导致目标线程的终止.不过Abort方法被…
1. 怎样创建Looper? Looper的构造方法为private,所以不能直接使用其构造方法创建. private Looper(boolean quitAllowed) { mQueue = new MessageQueue(quitAllowed); mThread = Thread.currentThread(); } 要想在当前线程创建Looper.需使用Looper的prepare方法,Looper.prepare(). 假设如今要我们来实现Looper.prepare()这种方法…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录如何安全的结束一个正在运行的线程Thread类相关的方法使用退出标志使用 interrupt 方法使用 interrupt() + InterruptedException使用 interrupt() + isInterrupted()一个综合案例不能结束的情况 如何安全的结束一…
THRDTERM产生两个线程.周期性地检查一个event对象.以决定要不要结束自己. #define WIN32_LEAN_AND_MEAN #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<time.h> #include "MtVerify.h" DWORD WINAPI ThreadFunc(LPVOID); HANDLE hRequestExitEv…
在程序执行中会遇到启动本软件的exe问,或者启用其它的exe文件,已达到执行某些操作的作用.下面是两种最常见的启动exe文件. 1.调用系统dll使用其提供的方法. 引用的dll, [DllImport("kernel32.dll")] public static extern int WinExec(string exeName, int operType); 调用,WinExec(@"路径\exe的文件名", 参数); operType参数如下: 0: 隐藏, …
使用线程的一个常见问题就是如何能够在一个线程开始运行之前,适当地将它初始化.初始化最常见的理由就是为了调整优先权.另一个理由是为了在SMP 系统中设定线程比较喜欢的 CPU.第10 章谈到 MFC 时我们会看到其他一些理由.    基本问题在于,你需要一个线程 handle,才能够调整线程的性质.但如果你以默认型式调用 CreateThread(),新线程会如脱缰野马一下子就起跑了,你根本来不及进行初始化设定操作.    解决之道就是 CreateThread() 的第5个参数,它允许你指定线程…
干净的终止一个线程  我曾经在第2章产生一个后台线程,用以输出一张屏幕外的 bitmap 图.我们必须解决的一个最复杂的问题就是,如果用户企图结束程序,而这张bitmap 图尚未完成,怎么办?第2章的一个鸵鸟做法就是在任何 worker 线程还没完成其工作之前,不准用户结束程序.只要修改主消息循环,使消息循环不得在任何一个 worker 线程尚未结束之前结束,即可办到.这种做法的最大优点就是"简单",但万一 bitmap 图十分复杂,需要很长的工作时间,那么程序有可能看起来像是&quo…
自己在做实验性小项目的时候,发现自己遇到一个问题:如何控制线程的"死亡"? 首先,如何开启一个线程呢? 最简单的代码: public class Main { public static void main(String[] args) { Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("当前线程:" + Thread.curr…
在计算机世界,当人们谈到并发时,它的意思是一系列的任务在计算机中同时执行.如果计算机有多个处理器或者多核处理器,那么这个同时性是真实发生的:如果计算机只有一个核心处理器那么就只是表面现象. 现代所有的操作系统都允许并发地执行任务.你可以在听音乐和浏览网页新闻的同时阅读邮件,我们说这种并发是进程级别的并发.而且在同一进程内,也会同时有多种任务,这些在同一进程内运行的并发任务称之为线程. 在这里我们要讨论的是线程级并发.Java提供了Thread类,使我们能够在一个Java进程中运行多个线程,每个线…
我们说handler是开启了另外一个线程,而且看代码的话确实是这样,实现了runnable接口,这在java中就是开启了一个线程,但是情况中的是这样吗?我们不妨来做个试验,如下 import android.app.Activity; import android.os.Bundle; import android.os.Handler; public class handlerThread extends Activity { /** Called when the activity is f…
这段时间折腾了哈java web应用的压力测试,部署容器是tomcat 7.期间学到了蛮多散碎的知识点,及时梳理总结,构建良好且易理解的知识架构把它们组织起来,以备忘.对web应用开发者来说,我们很关心应用可同时处理的请求数,以及响应时间.应用本身和它运行在其中的web容器是两个很重要的影响因素.对tomcat来说,每一个进来的请求(request)都需要一个线程,直到该请求结束.如果同时进来的请求多于当前可用的请求处理线程数,额外的线程就会被创建,直到到达配置的最大线程数(maxThreads…
转载: https://blog.csdn.net/yss28/article/details/53646627 <Win32多线程程序设计>–Jim Beveridge & Robert Wiener "等待某个什么东西"是线程常常需要做的事.等待是线程的"必要之恶". 如果你没有等待线程结束就莽撞地结束程序,线程会被系统强制结束掉--在它完成它的工作之前. 由于让线程停工是操作系统的责任,很合理地我们会认为操作系统也有责任让其他线程知道某个线…
Creating a Manager for Multiple Threads 1.You should also read Processes and Threads The previous lesson showed how to define a task that executes on a separate thread. If you only want to run the task once, this may be all you need. If you want to r…
进程和线程 当一个应用程序第一次启动的时候,Android会启动一个Linux进程和一个主线程(即UI线程:主要负责处理用户的按键事件.触屏事件及屏幕绘图事件等).默认情况下,所有该程序的组件都将在该进程和线程中运行.同时,Android会为每个应用程序分配一个单独的Linux用户.Android系统视图尽可能长时间地保持应用程序进程,只有在内存资源不足时,Android会尝试停止一些进程从而释放足够的资源给其他新的进程使用,也能保证用户正在访问的当前进程有足够的资源去及时地响应用户的事件.An…
最近和几个朋友交流Android开发中的网络下载问题时,谈到了用Thread开启下载线程时会产生的Bug,其实直接用子线程开启下载任务的确是很Low的做法,那么原因究竟如何,而比较高大上的做法是怎样?于是用这篇博文详细分析记录一下. 一.概念介绍 Thread是指在CPU运行的一个程序中,可以有多个执行路径.运行的程序称作进程,而这个执行路径,就被称为线程(如果对这两个名词不太理解的同学可以参考一下操作系统方面的书籍).Java中的多线程是指多个Thread可以在一段内同步执行,这样可以提高代码…
当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了许很多多的Thread.它们普遍的特点就是有一个threadLoop方法.依照字面的意思应该是这个线程能够循环处理数据.相应我想到到了java上层中的HandlerThread,这个预计也差点儿相同,但当时心里总有一个疙瘩.想弄清楚它为什么能够循环.还有它究竟是怎么循环起来的? Android中java世界的Thread 我们先来看看java是怎么创建一个线程的.这个是最舒服的,也是我最熟悉的. new T…
1. Android进程 一个应用程序被启动时,系统默认创建执行一个叫做"main"的线程.这个线程也是你的应用与界面工具包(android.widget和android.view包中的组件)交互的地方.于是main线程也被称为界面线程. 这种单线程的模式会带来低性能,除非你能正确的优化你的程序. 打个比方:用户触摸屏幕上的一个按钮时的点击事件即向线程中派发事件,比如每一个事件为一辆车.而每一条线程都好像是一条单行线的单车道.这条车道上的车量都排成队行驶至收费口进行事件处理.当处理的事…
在启动一个线程之后调用该线程的join()方法,会使该线程先执行,该线程执行完成后,再执行调用该线程的线程. 例如如下的任务: public class LiftOff extends Thread { public LiftOff(){ taskCount++;// 计数自增 } private int countDown = 3; // 倒计时数字 private static int taskCount = 0; private int id = taskCount; @Override…
[源码下载] 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 线程池 通过 ThreadPoolTimer 实现延迟执行 通过 ThreadPoolTimer 实现周期执行 通过 ThreadPool 实现“在线程池中找一个线程去执行指定的方法” 示例1.通过 ThreadPoolTimer 实现延迟执行(Thread…
常说的主线程(UI线程)是什么? 当一个Android程序刚启动的时候,我们的android系统就会启动一个带有一个单一线程的linux进程.默认情况下,所有的组件比如Activity都运行在同样的一个进程和线程当中,这个线程就叫做主线程或者UI线程.也就是说,默认情况下,app启动的时候会创建一个线程,这个线程就叫做主线程.因为大部分功能是进行UI上的操作,所有也叫做UI线程. 关于为什么叫主线程请参考:Android 主线程之旅--PSVM(public static void main.…
From : http://kb.cnblogs.com/page/42529/ 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可.(线程入口使程序知道该让这个线程干什么事) 在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数. 打开你的VS.net,新建一个控制台…
转自:http://www.cnblogs.com/crazypebble/archive/2011/04/05/2006213.html 最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程. 在Android平台下,结束进程的方法还是比较多的.首先指明,此处的“结束进程”,包含了结束自身进程和结束其他进程两个方面.通过查阅SDK文档和网上的一些资料,自己找到一些结束进程的方法.在这里做一些归纳和总结,文章的部分信息有可能来自网上已有的文章和帖子,由于过了比较长…
启动一个线程在一个方法中启动一个线程,有两种方法第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法)第二种是,现在方法中new一个线程,然后直接调用他的start方法:new Thread(Runable_name).start;然后对Runable_name进行声明(注意,这个Runable_name是属性(也就是变量,不是方法或者类))private Runnable runnable = new Runnable() { @Override…
以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luoshengyang/article/details/8923485http://blog.csdn.net/luoshengyang/article/details/12957169 整理by Doing 消息机制         Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队列…
WPF中在对界面进行操作的时候,可能会遇到"调用线程无法访问此对象,因为另一个线程拥有该对象"异常,这是因为WPF中只有UI线程才能操作UI元素,非UI线程要访问UI时就会报异常了. 解决方法: Dispatcher.BeginInvoke()与Invoke()方法.BeginInvoke()异步执行,不等待委托结束就更新,Invoke()同步执行,需等待委托执行完. Dispatcher.BeginInvoke(new Action(delegate{ 你的操作... 如:textB…
javajava 添加一个线程.创建响应的用户界面 . 演示示例代码 来自thinking in java 4 21章  部分的代码  夹21.2.11 thinking in java 4免费下载:http://download.csdn.net/detail/liangrui1988/7580155 package org.rui.thread.concurrent; /** * 增加一个线程 * 一个线程能够在其它线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才继续运…
一个.java创建两个线程的方法 1.从java.lang.Thread派生一个新类线程类,其覆盖run()方法 2.实现Runnable接口.重载Runnable接口中的run()方法. 使用Thread类来创建线程和创建普通类的对象的操作是一样的,线程是Thread类或者其子类的实例对象. 二.java提供的两种创建线程的差别 java中类是单继承的,当定义一个新的线程类的时候.它仅仅能扩展一个外部类.那么当创建的线程是继承自Thread类来实现的,那么此线程类无法再扩展其它类,无法实现复杂…
Android发展的一个重要方面Makefile分析 随着移动互联网的发展,移动开发也越来越吃香了.眼下最火的莫过于android.android是什么就不用说了,android自从开源以来,就受到非常多人的追捧.当然.一部人追捧它是由于它是Google开发的.对一个程序 员来说,一个系统值不值得追捧得要拿代码来说话.我这里并不打算分析android的代码.而是android的makefile.或许大家已经知道了在android源代码里,我们能够看见非常多makefile文件,起初我也不明确.经…