synchronized锁住的是对象,而不是一段代码。
synchronized锁住的对象,在同一时刻只能有一个线程访问。
按被锁住的对象分类,synchronized的用法有三种:
1、锁实例对象的成员变量。语法格式为:synchronized(mLock){...}。含义:锁 实例变量mLock,当后面花括号中语句块执行完毕且解锁后,其他线程才能对mLock加锁。
2、锁类实例对象本身。语法格式为:synchronized(this){...} 或 public synchronized void lockMethod{...}
3、锁类本身。语法格式为:synchronized(Foo.class){...} 或 public synchronized void lockMethod(...}