android 线程间同步问题

我现在有2个android线程,一个是view 线程,一个是工作线程,我现在想让 工程线程暂停,直到view线程的 onDraw方法被调用后再继续运行

如何做?如何等待信号

处理方法

在java2个线程中传递对象,让一个线程去通知另一个线程的方式如下,在工作线程中调用

stick.wait();

When the view thread finishes its onDraw work, it calls this:

当view线程调用完onDraw的时候可以调用 stick.notify();

stick.notify();

注意,视图线程拥有该对象上的显示器的需求。对你来说,这应该是相当简单的执行与小同步块:


1

2

3

4

5

6

void

onDraw() {

  ...

  synchronized

(stick) {

    stick.notify();

  }

}
//
end onDraw()

原文地址:http://www.itmmd.com/201411/97.html

该文章由 萌萌的IT人 整理发布,转载须标明出处。

时间: 2024-10-16 14:38:06

android 线程间同步问题的相关文章

线程间同步之信号量实现环形buf

一.概述: 信号量是一个非负整数的计数器,它通过计数器来实现多线程对临界资源的顺序访问,从而实现线程间的同步.它与进程间通信的信号量不同,进程间通信的信号量是一个信号量集,而线程间同步的信号量是一个信号.还有一点,就是对信号量的操作是原子的. 信号量与互斥锁的区别: (1).互斥锁的值只能是0或1,而信号量的值为非负整数. (2).互斥锁用与实现线程间的互斥,而信号量用于实现线程间的同步. (3).互斥锁的加锁和解锁必须由同一个线程分别对应使用,而信号量可以由一个线程得到,另一个线程释放. 下面

android线程间通讯

近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子. andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的. 在Android,这里的线程分为有消息循环的线程和没有消息循环的线程,有消息循环的线程一般都会有一个Looper,这个事android的新 概念.我们的主线程(UI线程)就是一个消息循环的线程.针对这种消息循

Linux进程间通信与线程间同步详解(全面详细)

引用:http://community.csdn.net/Expert/TopicView3.asp?id=4374496linux下进程间通信的几种主要手段简介: 1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信:   2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身

conditon_variable(条件变量)用于线程间同步

conditon_variable(条件变量)用于线程间同步 condition_variable有5个函数,函数名及对应的功能如下: wait阻塞自己,等待唤醒 wait_for阻塞自己,等待唤醒,最多等待一段时间 wait_until阻塞自己,等待唤醒,最多等待到某个时间点 notify_one 唤醒一个等待在这个条件变量上的线程 notify_all 唤醒所有等待在这个条件变量上的线程 3个wait函数都要求输入一个已经上锁的unique_lock<mutex>变量,并且都有两个版本,一

linux线程间同步方式汇总

抽空做了下linux所有线程间同步方式的汇总(原生的),包含以下几个: 1, mutex 2, condition variable 3, reader-writer lock 4, spin lock 5, barrier mutex是最常用的线程间同步方式,主要目的是保护共享的资源可以被原子地访问. 个人感觉condition variable是除了mutex之外的第二常用的线程间同步方式,可以用来以同步的方式使用一个线程来通知另一个线程某个事件已经发生.可以理解为线程间的信号. reade

Java并发:线程间同步-条件队列和同步工具类

转载请注明出处: jiq?钦's technical Blog - 季义钦 线程之间的同步,除了互斥(前面介绍的互斥锁)之外,还存在协作关系,下面我们就介绍一下java线程间常见的一些协作方式. 一.内置条件队列 正如每个Java对象都可以作为一个内置锁,每个对象也可以作为一个条件队列,称为内置条件队列,Object.wait().notify()/notifyAll()构成了内置条件队列的API. 需要注意的是,调用任何对象X的内置条件队列的API都必须要先获得该对象X的内置锁. 1.API介

rtt学习之线程间同步与通信

一 线程间的同步与互斥:信号量.互斥量.实践集 线程互斥是指对于临界区资源访问的排它性,如多个线程对共享内存资源的访问,生产消费型对产品的操作.临界区操作操作方法有: rt_hw_interrupt_disable() / rt_enter_critical()进入临界区, rt_hw_interrupt_enable() / rt_exit_critical()退出临界区 信号量的创建:rt_sem_t rt_sem_create(const char *name,rt_uint32_t va

Android线程间通信机制

当android应用程序运行时,一个主线程被创建(也称作UI线程),此线程主要负责处理UI相关的事件,由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作,如果在非UI线程直接对UI进行了操作,则会报错,另外,对于运算量较大的操作和IO操作,我们需要新开线程来处理这些工作,以免阻塞UI线程,子线程与主线程之间是怎样进行通信的呢?此时就要采用消息循环机制(Looper)与Handler进行处理. 一.基本概念 Looper:每一个线程都可以产生一个Looper,用来管理线程的

RT-Thread的线程间同步

禁止系统调度上一节< 多线程导致的临界区问题>中由于 test1 线程被 test2 线程打断,才导致了我们没有得到预期的结果,我们一般可通过关闭中断和调度器上锁这两种简单的途径来禁止系统调度,防止线程被打断,从而保证临界区不被破坏. 1. 关闭中断线程中关闭中断保护临界区的结构如下: #include <rtthread.h> #include <stm32f10x.h> #include "test.h" rt_uint32_t g_tmp;/*