Android中,相信主线程和子线程之间的通信大家都不陌生了吧。在一次面试经历中被问到了两个子线程之间是如何进行通信的。哎呦!这可蒙住我了。后来回家研究了下,分享给大家。

其实android中线程通信无非就是handler和looper的操作。

一般情况下的主线程和子线程之间的通信,都是通过主线程中的handler把子线程中的message发给主线程中的looper,或者,主线程中的handler通过post向looper中发送一个runnable。looper默认存在于main线程中。那么子线程中没有Looper,该怎么办呢?很简单,我们可以把looper绑定到子线程中,并且创建一个handler。在另一个线程中通过这个handler发送消息,就可以实现子线程之间的通信了。

public class Thread1 extends Thread{  private Handler handler1;  public Handler getHandler(){//注意哦,在run执行之前,返回的是null  return handler1;  }  @Override  public void run() {  Looper.prepare();  handler1 = new Handler(){  public void handleMessage(android.os.Message msg) {  //这里处理消息  Log.i("MThread", "收到消息了:"+Thread.currentThread().getName()+"----"+msg.obj);  };  };  Looper.loop();  }  }

  

public class Thread2 extends Thread{  @Override  public void run() {  for(int i=0; i<10; i++){  Message msg = Message.obtain();  msg.what = 1;  msg.obj = System.currentTimeMillis()+"";  handler1.sendMessage(msg);  Log.i("MThread", Thread.currentThread().getName()+"----发送了消息!"+msg.obj);  SystemClock.sleep(1000);  }  }  }

  

执行效果:

代码下载请见:

http://download.csdn.net/detail/kedaweiwei/8518701

转载于:https://www.cnblogs.com/Jackie-zhang/p/6080218.html

Android两个子线程之间通信相关推荐

  1. (转载) Android两个子线程之间通信

    Android两个子线程之间通信 标签: classthreadandroid子线程通信 2015-03-20 17:03 3239人阅读 评论(0) 收藏 举报  分类: 个人杂谈 版权声明:本文为 ...

  2. java 管道流的读写操作 用于两个线程之间的通信

    /* java 管道流的读写操作 用于两个线程之间    PipedOutputStream    PipedInputStream  连接起来就是一个管道     管道输出流可以向管道写入数据   ...

  3. Java 线程之间通信

    目录 概念 原理 实现 1. 第一种解法,包含多种小的不同实现方式,但一个共同点就是靠一个共享变量来做控制: a. 利用最基本的synchronized.notify.wait: b. 利用Lock和 ...

  4. 如何在两个线程之间共享数据

    两个线程之间共享数据的方式 Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见 性和有序性原子性.Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解 ...

  5. android fragment传递数据,Android 两个Fragment之间传递数据实例详解

    Android 两个Fragment之间如何传递数据 FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来.有什么办法? F ...

  6. 树莓派 | threading01 - 创建两个子线程同时运行,两个线程各负责控制一个LED灯以不同的频率闪烁

    文章目录 一.前言 二.代码 三.运行 一.前言 Python | threading01 - 创建两个同时运行的子线程 上一次使用了python的多线程库threading创建了两个同时运行的子线程 ...

  7. #两台主机之间通信时为什么要用IP地址,而不直接用硬件地址?

    两台主机之间通信时为什么要用IP地址,而不直接用硬件地址?   既然在网络链路上传送的数据帧最终是用硬件地址来寻找目的主机,为什么还要用IP地址进行通信,为什么不直接是用硬件地址进行通信?   首先要 ...

  8. 线程之间通信 等待(wait)和通知(notify)

    线程通信概念: 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程之间的通信就成为整体的必用方式之一.当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同 ...

  9. Java线程之间通信

    用多线程的目的:更好的利用CPU的资源.因为所有的多线程代码都可以用单线程来实现. 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程. 并行:多个CPU实例或者多台机器同时执行一段处理逻辑, ...

最新文章

  1. 亲测吃知乎月饼变身“喷射战士”,我给大家科普一下发生甚么事了
  2. C++---拷贝构造函数和赋值构造函数
  3. Ubuntu18.04挂载exfat格式移动硬盘
  4. python print中文_python:print含有中文的list
  5. Java中Comparator和Comparable之间的区别
  6. 自组四旋翼2015.9
  7. golang windows下杀进程
  8. 魅蓝note3 android操作系统,魅族魅蓝Note3的内存容量是多少
  9. java对接微信公众号
  10. 处理minidump文件用到的“工具”的分享
  11. ListView分页加载数据
  12. opengl_纹理过滤
  13. 宇宙飞机(space plane)
  14. android recyclerview监听滑动状态
  15. 计算机专业答辩系统抄袭怎么办,计算机毕业设计答辩怎么老是不过?
  16. 汉诺塔非递归算法分析与实现
  17. 教你三步优化宝贝标题,搜索流量翻倍获取
  18. Sql 中两个数除法计算结果等于0原因是什么?
  19. 小程序上传视频的php接口处理,微信小程序[第十二篇] -- 上传视频
  20. 找资源的网址——总结笔记二

热门文章

  1. python3 列表相关操作
  2. 添加时,时间格式明明和数据库格式一样,却一直在报错,存不进去
  3. python运行命令_Python中执行外部命令
  4. 详解TCP协议三次握手四次挥手
  5. html页面tableview,用JS写的一个TableView控件代码
  6. centos linux怎么安装mysql_CentOS-Linux系统下安装MySQL
  7. php 汉王云名片_汉王云-名片识别【最新版】_OCR_人工智能_API-云市场-阿里云
  8. mybatis 映射成多个list_SSM:Mybatis架构与原理
  9. MySQL进阶(DDL与DML)
  10. 在阿里巴巴工作是一种怎样的体验?