Java-synchronized

2018-05-21  本文已影响0人  权游一里

synchronized是java的关键字(内置的),Lock是java的接口。两者都实现了对于临界资源的同步互斥访问,各有优缺点。

1.简介

synchronized的使用对象主要有两大类:

当多个线程访问了同一个被synchronized修饰的内容时,只有最先获取该内容的锁,其他线程只能等待该线程释放锁(等待或结束)后才能获取该内容的锁。也就是该内容在一段时间内只能被一个线程所拥有。

线程释放锁的情况有三种:

2.使用

2.1 作用于对象

//代码块
synchronized(this){
  //...
}

//指定对象
synchronized(obj){
  //...
}

//特殊对象,没有明确对象时
private byte[] lock = new byte[0];//特殊对象
......
synchronized(lock){
  //...
}

2.2 作用于方法

//对象方法
public synchronized void method(){
  //...
}
或
public synchronized void method(){
  synchronized(this){
    //...
  }
}

//静态方法
public synchronized static void method(){
  //...
}

2.3 作用于类

synchronized(Clazz.class){
  //...
}

注意

上一篇 下一篇

猜你喜欢

热点阅读