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锁字符串对象的一个易错点

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

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

1.scrollview中嵌套有listview或者gridview,从其他页面返回到这个页面,焦点总是跑到listview或者gridview上 解决办法:重写scrollview的下边方法 @O...

Android开发易错

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

Android使用HttpClient方法和易错问题

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

html易错的点

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

java易错点

  • 2015年10月30日 10:26
  • 183KB
  • 下载

Java易错知识点(2) - 在读取Cookie时除了Key,Value是得不到其他信息的

全文总结:   在读取Cookie,然后操作时,除了getName(),getValue()外,不要妄图得到其他信息,如下方法不会得到值的: cookie.getMaxAge(); cooki...

2010年信考题库易错点

  • 2010年04月27日 09:18
  • 39KB
  • 下载

java 语言中常见易错知识点

  • 2009年04月14日 00:20
  • 39KB
  • 下载

.NET常见的面试题(都是易错点)

简述 private、 protected、 public、 internal 修饰符的访问权限。 答:private : 私有成员, 在类的内部才可以访问。   protected : 保护成员,该...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Synchronized的易错点
举报原因:
原因补充:

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