Android Synchronized的易错点

原创 2015年11月20日 15:43:00

在Java中关键字Synchronized用于提供同步操作,主要的作用是在多线程的情况下,保持数据的一致。
一般有以下三种用法:

  • 保护一段代码
class Foo implements Runnable {

  public void lockedMethod() {
    private String mLock;
    //.......
    synchronized(mLock) {
      //.......
    }
  }
  //......
}
  • 写在一个类的方法前
class Foo implements Runnable {

  public synchronized void lockedMethod() {//......}
}
  • 写在一个类的静态方法前
class Foo implements Runnable {

  public synchronized static void lockedMethod() {//......}
}

对于第一种方法 Synchronized锁住的是一个对象 而不是一段代码
如果两个线程都同时调用 Foo foo1中的lockedMethod ,那么在同一时间内,只有一个线程可图执行该方法中被Synchronized保护起来的代码,但是如果线程1是调用的 Foo foo1中的lockedMethod 而线程2是调用的 Foo foo2中的lockedMethod,这样并不会出现互斥的现象,因为它们是两把不同的锁。
你也可以将这个对象锁住

SynchronizedFOO.class){//..........}

如果你将整个类锁住一旦有一个线程调用 FOO类任何的实例对象的lockedMethod方法,另一个线程对于FOO的任何对象的lockedMethod都会导致互斥。

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用synchronized需要注意的一个问题

说到synchronized这个关键字,大伙第一时间想到的,可能就是:当资源共享时,访问(修改)该资源的所有方法都要加上锁(synchronized),才能保证数据不会出错(数据不一致); Java提...
  • JimmyLincole
  • JimmyLincole
  • 2013年12月07日 23:49
  • 2315

java中synchronized的用法详解

记下来,很重要。 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。      一、当两个并发线程访问同一个对象object中...
  • android_panda
  • android_panda
  • 2014年03月25日 11:25
  • 3420

java中容易犯错的知识点

java中容易犯错的知识点该博客的内容是在看了《head first java》之后总结的一些知识点,是针对我个人的不足总结的知识点,我写博客还是newer,希望大神们多多指教。需要注意的是这篇内容的...
  • LilyNothing
  • LilyNothing
  • 2016年05月27日 18:56
  • 3532

多线程之synchronized锁字符串对象的一个易错点

西城旧梦梦旧人 2017-05-08 21:17 前段时间讲了synchronized锁方法,锁this对象,锁非this对象。具体可以看往期的文章,今天我们来看下锁非this对象(锁String...
  • u011277123
  • u011277123
  • 2017年05月12日 13:39
  • 1067

android开发笔记(1-5)(易错点以及技术难点攻克)

1.scrollview中嵌套有listview或者gridview,从其他页面返回到这个页面,焦点总是跑到listview或者gridview上 解决办法:重写scrollview的下边方法 @O...
  • crazymaple213
  • crazymaple213
  • 2015年05月21日 15:47
  • 677

html易错的点

  • 2015年06月25日 11:17
  • 28KB
  • 下载

Android开发易错

在安卓开发中,遇到的各种坑,现在找个时间把这些错误整理下来,分享给各位,希望你们不要重走我犯下的错误,同时,也对我这段时间的开发的错误,重新温习下。...
  • liliangpin
  • liliangpin
  • 2016年10月15日 21:13
  • 89

Android使用HttpClient方法和易错问题

针对初次介绍使用HttpClient容易犯的错误
  • zpf8861
  • zpf8861
  • 2014年06月13日 13:13
  • 1573

C语言常见易错点小结

  • 2010年11月10日 21:32
  • 6KB
  • 下载

JAVA学习易错点20

  • 2008年01月19日 19:56
  • 28KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Synchronized的易错点
举报原因:
原因补充:

(最多只允许输入30个字)