多线程就是分时利用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 中三种启用线程的方法相关推荐

  1. tomcat中三种部署项目的方法(转)

    tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/h ...

  2. QT中三种构建菜单栏的方法

    QT中三种构建菜单栏的方法 方法1 <C++ GUI programming with Qt 4, Second Edition>给出的一种方法:QMenum定义单个菜单,调用menuBa ...

  3. Android:三种Adapter的使用方法

    三种Adapter的使用方法 1.simpleAdapter使用(3步:准备样式,准备数据,配置适配器) 1).adapter方法说明 2).插入一个listview ,创建 listview 样式x ...

  4. Android中三种锁的基本实现

    一.synchronized 基本概念:对象锁synchronized(object){-.}用法 在以上的代码块中只能由一个线程执行!!! wait().notify()是用在这个代码块当中的.wa ...

  5. Java Web开发Tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/hello" docBas ...

  6. java swing 注册事件_比较Java Swing中三种注册事件的方法

    Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...

  7. Java基础_17 | Java多线程程序设计(Java中两种创建线程的方法、多线程之间的同步和互斥)

    1. 多线程实现最核心的机制 一个程序在其执行过程中, 可以产生多个线程, 形成多条执行线索.,每条线程,有产生.存在和消亡的过程,并且独立完成各自的功能,互不干扰. 多线程程序运行只占用一个CPU, ...

  8. tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/hello" docBas ...

  9. java中三种转string的方法_java中int,char,string三种类型的相互转换

    如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将 ...

最新文章

  1. SAP UI5 Web Component里最简单的React列表控件的用法
  2. 一个逐步“优化”的范例程序(转)
  3. [51nod1201]整数划分
  4. python class def 格式_Python symbol.classdef方法代码示例
  5. warning C4819: The file contains a character that cannot be represented in the current code page
  6. JavaScript数据结构与算法基础学习笔记03----链表与双向链表
  7. Python随机生成姓名+电话号码+邮箱
  8. SQL Server 2000安装教程
  9. DOS命令 For Set
  10. 相机视场角和焦距_镜头焦距和视场角介绍!
  11. Qt 菜单栏、工具栏、状态栏、浮动窗口、核心部件
  12. Xcode 秘籍 —— 很多 iOS 开发者都不知道的基本操作
  13. 中国石油大学计算机应用基础在线考试答案,中国石油大学2020年春季《计算机应用基础》在线考试答卷附标准答案...
  14. 电工电子学习笔记----1.电阻、电容、阻抗、容抗复习巩固
  15. HTML中的meta标签
  16. 软考高级信息系统项目管理师系列之:项目范围管理
  17. 印象最深的一次服务器维护中,与服务器最深的羁绊,你有着怎样的闯荡大荒的故事?...
  18. js获取当前时间 年月日 分秒
  19. 如何在Java中将字符串转换为日期
  20. 18种抗癌果蔬排行榜

热门文章

  1. 无监督算法与异常检测
  2. 机器学习笔记 时间序列预测(基本数据处理,Box-Cox)
  3. QT利用lamda正则表达式取出字符串中的浮点数与整数
  4. tomcat常见面试题目问答Top10
  5. 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!
  6. 从 Spring Cloud 看一个微服务框架的「五脏六腑]
  7. Linux中date命令的各种实用方法--转载
  8. jQuery UI Widget(1.8.1)工作原理--转载
  9. 海象金服与沐金农签署战略合作协议,共谋消费金融发展 正文 财经网微评论(0人评论) 本文来源于东方网 2017-08-17 10:03:12 我要评论(0) share 快成为第一
  10. 【Excel】VBA自动化更新数据表格