Android 中三种启用线程的方法
多线程就是分时利用CPU,宏观上让所有线程一起执行 ,也叫并发
先调用start后调用run
1.start()方法来启动线程,真正实现了多线程运行。
这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码
通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行
然后通过此Thread类调用方法run()来完成其运行操作的
这里方法run()称为线程体,它包含了要执行的这个线程的内容
Run方法运行结束, 此线程终止。然后CPU再调度其它线程
2.run()方法当作普通方法的方式调用
程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码
程序中只有主线程——这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
Runnable是一个接口
Thread是Runnable的子类
HandlerThread就是可以处理消息循环的线程,是一个拥有Looper的线程,可以处理消息循环
Handler是沟通Activity 与Thread/runnable的桥梁。而Handler是运行在主UI线程中的,它与子线程可以通过Message对象来传递数据
1,首先第一种启用方法是通过继承Thread类,并改写run方法来实现一个线程
public class MyThread extends Thread { //继承Thread类,并改写其run方法 private final static String TAG = "My Thread ===> "; public void run(){ Log.d(TAG, "run"); for(int i = 0; i<100; i++) { Log.e(TAG, Thread.currentThread().getName() + "i = " + i); } }
}
调用启动
new MyThread().start();
运行结果:
11
2,第二种启用方式创建一个Runnable对象
public class MyRunnable implements Runnable{ private final static String TAG = "My Runnable ===> "; @Override public void run() { // TODO Auto-generated method stub Log.d(TAG, "run"); for(int i = 0; i<1000; i++) { Log.e(TAG, Thread.currentThread().getName() + "i = " + i); } }
}
调用启动
new Thread(new MyRunnable()).start();
运行结果:
11
3, 第三种启用方式通过Handler启动线程
public class MainActivity extends Activity { private final static String TAG = "UOfly Android Thread ==>"; private int count = 0; private Handler mHandler = new Handler(); private Runnable mRunnable = new Runnable() { public void run() { Log.e(TAG, Thread.currentThread().getName() + " " + count); count++; setTitle("" + count); // 每3秒执行一次 mHandler.postDelayed(mRunnable, 3000); //给自己发送消息,自运行} }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 通过Handler启动线程 mHandler.post(mRunnable); //发送消息,启动线程运行} @Override protected void onDestroy() { //将线程销毁掉 mHandler.removeCallbacks(mRunnable); super.onDestroy(); } }
Android 中三种启用线程的方法相关推荐
- tomcat中三种部署项目的方法(转)
tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/h ...
- QT中三种构建菜单栏的方法
QT中三种构建菜单栏的方法 方法1 <C++ GUI programming with Qt 4, Second Edition>给出的一种方法:QMenum定义单个菜单,调用menuBa ...
- Android:三种Adapter的使用方法
三种Adapter的使用方法 1.simpleAdapter使用(3步:准备样式,准备数据,配置适配器) 1).adapter方法说明 2).插入一个listview ,创建 listview 样式x ...
- Android中三种锁的基本实现
一.synchronized 基本概念:对象锁synchronized(object){-.}用法 在以上的代码块中只能由一个线程执行!!! wait().notify()是用在这个代码块当中的.wa ...
- Java Web开发Tomcat中三种部署项目的方法
第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBas ...
- java swing 注册事件_比较Java Swing中三种注册事件的方法
Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...
- Java基础_17 | Java多线程程序设计(Java中两种创建线程的方法、多线程之间的同步和互斥)
1. 多线程实现最核心的机制 一个程序在其执行过程中, 可以产生多个线程, 形成多条执行线索.,每条线程,有产生.存在和消亡的过程,并且独立完成各自的功能,互不干扰. 多线程程序运行只占用一个CPU, ...
- tomcat中三种部署项目的方法
第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBas ...
- java中三种转string的方法_java中int,char,string三种类型的相互转换
如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...
最新文章
- SAP UI5 Web Component里最简单的React列表控件的用法
- 一个逐步“优化”的范例程序(转)
- [51nod1201]整数划分
- python class def 格式_Python symbol.classdef方法代码示例
- warning C4819: The file contains a character that cannot be represented in the current code page
- JavaScript数据结构与算法基础学习笔记03----链表与双向链表
- Python随机生成姓名+电话号码+邮箱
- SQL Server 2000安装教程
- DOS命令 For Set
- 相机视场角和焦距_镜头焦距和视场角介绍!
- Qt 菜单栏、工具栏、状态栏、浮动窗口、核心部件
- Xcode 秘籍 —— 很多 iOS 开发者都不知道的基本操作
- 中国石油大学计算机应用基础在线考试答案,中国石油大学2020年春季《计算机应用基础》在线考试答卷附标准答案...
- 电工电子学习笔记----1.电阻、电容、阻抗、容抗复习巩固
- HTML中的meta标签
- 软考高级信息系统项目管理师系列之:项目范围管理
- 印象最深的一次服务器维护中,与服务器最深的羁绊,你有着怎样的闯荡大荒的故事?...
- js获取当前时间 年月日 分秒
- 如何在Java中将字符串转换为日期
- 18种抗癌果蔬排行榜
热门文章
- 无监督算法与异常检测
- 机器学习笔记 时间序列预测(基本数据处理,Box-Cox)
- QT利用lamda正则表达式取出字符串中的浮点数与整数
- tomcat常见面试题目问答Top10
- 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!
- 从 Spring Cloud 看一个微服务框架的「五脏六腑]
- Linux中date命令的各种实用方法--转载
- jQuery UI Widget(1.8.1)工作原理--转载
- 海象金服与沐金农签署战略合作协议,共谋消费金融发展 正文 财经网微评论(0人评论) 本文来源于东方网 2017-08-17 10:03:12 我要评论(0) share 快成为第一
- 【Excel】VBA自动化更新数据表格