多线程之Thread+handler

应用开发中,经常会遇到需要多线程技术的时候,比如UI显示和数据处理分开。

在实际应用中经常会遇到这种场景,我们需要新开一个线程来监听数据状态(数据状态的改变,接收数据,发送数据等等),当发现数据状态改变时通知主线程(通过消息机制发送消息到主线程),主线程接收到通知之后进行处理(自定义消息处理接口)。

具体实现如下:

  1. 准备线程的创建和消息的处理,这里需要用到android里面的Handler和Thread类,在主线程中添加两个成员Handler、Thread,并实现消息的发送和处理:

    private Handler handler = new Handler(){
    
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            switch(msg.what){
                case 0:
                    //添加自定义消息处理
                    //...
                    break;
                default:break;
            }
        }
    
    };
    private Thread MagCardDataListenThread = new Thread(new Runnable(){
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while(isMagCardRunning){
                try{
                    Thread.currentThread().sleep(1000);
                    //状态改变时发送消息到主线程
                    if(magcard.IsGetMagCardData()){
                        Message msg = new Message();
                        msg.what = 0;
                        handler.sendMessage(msg);
                        }
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }
            }
    
        }
    });
  2. 启动子线程

     MagCardDataListenThread.start();

    以上文章摘自:http://blog.csdn.net/imyang2007/article/details/7839883

多线程之Thread+handler

时间: 2024-11-16 20:55:48

多线程之Thread+handler的相关文章

iOS多线程之Thread

多线程 ? Thread 是苹果官方提供的,简单已用,可以直接操作线程对象.不过需要程序员自己管理线程的生命周期,主要是创建那部分 优缺点 面向对象,简单易用 直接操作线程对象 需要自己管理线程生命周期(主要指创建) 偶尔会用的Thread,一般会用到它的方法:current.name等等 基本使用 创建线程 ``` 创建线程,手动启动 let thread = Thread(target: self, selector: #selector(makeMoney), object: ["Name

JavaSE学习52:细说多线程之Thread类和Runable接口

一线程创建的两种方式比较 线程创建和启动有两种方式,这里只是列出步骤,不再进行详细解释. (1)继承Thread类 class MyThread extends Thread{ public void run(){ ... } } MyThread mt=new MyThread();//创建线程 mt.start();//启动线程 (2)实现Runnable接口 class MyThread implements Runnable{ public void run(){ ... } } MyT

多线程编程--创建线程之Thread VS Runnable

前面写过一篇基础的创建多线程的博文: 那么本篇博文主要来对比一下这两种创建线程的区别. 继承Thread类: 还拿上篇博客的例子来说: 四个线程各自卖各自的票,说明四个线程之间没有共享,是独立的线程.每个线程平等,没有优先级关系.这三个线程不是一次交替执行,而是三个线程同时被执行的情况下,有的线程被分配时间片的机会多,票被提前卖完,有的线程被分配的时间片的机会少,票迟一些卖完. 故,利用扩展Thread类创建的多个线程,虽然执行的是相同的代码,但彼此相互独立,且各自拥有自己的资源,互不干扰. 分

细说多线程之Thread VS Runnable

[线程创建的两种方式] [线程的生命周期] ● 就绪:创建了线程对象后,调用了线程的start(). (注意:此时线程只是进入了线程队列,等待获取CPU服务,具备了运行的条件,但并不一定已经开始运行了).● 运行:处于就绪状态的线程,一旦获取了CPU资源,便进入到运行状态,开始执行run()里面的逻辑.● 终止:线程的run()执行完毕,或者线程调用了stop(),线程便进入终止状态.● 阻塞:一个正在执行的线程在某些情况下,由于某种原因而暂时让出了CPU资源,暂停了自己的执行, 便进入了阻塞状

细说多线程之Thread与Runnable

1:创建线程的两种方式: 继承Thread类 public class MyThread extends Thread { @Override public void run() { }} MyThread mt1 = new MyThread();mt1.start(); 实现Runnable 接口 public class MyThread implements Runnable { @Override public void run() { }} MyThread mt = new MyT

Android-——多线程之Handler(转)

Android--多线程之Handler 原文地址:http://www.cnblogs.com/shirley-1019/p/3557800.html 前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的UI组件,这样会导致新启动的线程无法改变UI组件的属性值.但实际开发中,很多地方需要在 工作线程中改变UI组件的属性值,比如下载网络图片.动画等等

Android 多线程之IntentService 完全详解

关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) android多线程-AsyncTask之工作原理深入解析(下) IntentService 一.IntentService概述 ??上一篇我们聊到了HandlerThread,本篇我们就来看看HandlerThread在IntentService中的应用,看本篇前建议先看看上篇的HandlerT

JAVA多线程之wait/notify

本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait() 与  notify/notifyAll() 的执行过程 ③中断 调用wait()方法进入等待队列的 线程 ④notify 通知的顺序不能错 ⑤多线程中测试某个条件的变化用 if 还是用 while? ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 wait()

多线程之AutoResetEvent

我们在线程编程的时候往往会涉及到线程的通信,通过信号的接受来进行线程是否阻塞的操作. AutoResetEvent 允许线程通过发信号互相通信.通常,此通信涉及线程需要独占访问的资源. AutoResetEvent 的方法有很多,具体方法和扩展方法请详见AutoResetEvent类,最常用方法中就有Set()和WaitOne(). 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号.如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的