Skip to content

Instantly share code, notes, and snippets.

l = [x*x for x in range(10) if x % 3 == 0]
#l = [0, 9, 36, 81]
a = 3
b = 1
1 <= b <= a < 10 #True
@kobezorro
kobezorro / sublime_packages.md
Created July 11, 2015 07:42
store sublime packages
  • "ignored_packages": [] # turn on vim mode
  • gist
@kobezorro
kobezorro / java_synchronized.md
Last active August 29, 2015 14:24
java synchronized

synchronized方法

如果一个对象有多个synchronized方法,某一时刻某个线程已经进入到了某个synchronized方法,那么在该方法没有执行完毕前,其他线程是无法访问该对象的任何synchronized方法的。

Java中的每个对象都有一个锁(lock),或者叫做监视器(monitor),当一个线程访问某个对象的synchronized方法时,将该对象上锁,其他任何线程都无法再去访问该对象的synchronized方法了(这里是指所有的同步方法,而不仅仅是同一个方法),直到之前的那个线程执行方法完毕后(或者是抛出了异常),才将该对象的锁释放掉,其他线程才有可能再去访问该对象的synchronized方法。 这时候是给对象上锁,如果是不同的对象,则各个对象之间没有限制关系。

synchronized static方法

当一个synchronized关键字修饰的方法同时又被static修饰,之前说过,非静态的同步方法会将对象上锁,但是静态方法不属于对象,而是属于类,它会将这个方法所在的类的Class对象上锁。

my first gist