开发学院手机开发Android 开发 Android应用开发之Java基础篇——数据同步 阅读

Android应用开发之Java基础篇——数据同步

 2010-10-14 06:17:00 来源:本站整理   
核心提示:线程之间协作这个世界“没有永远的朋友,只有永远的利益”,Android应用开发之Java基础篇——数据同步(3),线程之间不光有竞争,某些情况下,但是软件技术没有“银弹”,多线程编程的复杂性也需要高度重视,也需要协作,举例如下假如有两个线程A

线程之间协作

这个世界“没有永远的朋友,只有永远的利益”。线程之间不光有竞争,某些情况下,也需要协作。举例如下假如有两个线程A,B,A线程负责从消息队列里面取出消息,并处理;B线程负责将消息放入消息队列。

A线程首先获得消息队列的锁,然后加锁,发现里面已经消息空了。怎么办呢?答案是阻塞当前线程,并释放消息队列的锁。B线程获得消息队列的锁,并把消息放入队列,通知A线程继续运行。

Java的基类Object提供了wait和notify方法(包括notifyAll)来实现上面所说的这种情形。另外有一点需要注意调用 wait,notify方法的时候,请确保你已经获得对象锁,否则将会抛出异常。另外使用这个wait和notify方法一定要小心,非常容易出错,因为线程协作本来就是一个非常复杂的问题。Android中也有使用wait和notify不当的地方,请参考我的博文《Android2.1源码中的一个bug》。本文就不展开讨论这两个方法了,请大家查看手册来学习使用。

总结

在任何系统中多线程编程都是一个比较复杂的部分。虽然Java进行了一些简化,但是软件技术没有“银弹”,多线程编程的复杂性也需要高度重视,负责经常容易中招。

上一页  1 2 3 

Tags:Android 应用开发 Java

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接