Synchronized是用来保证同一时刻本段代码不会同时运行。在操作系统中这些代码被认为是临界段,如访问打印机,磁盘,信号量等,只可能有一段代码在使用这些临界资源。其他必须等待。这类问题在多cpu多线程的时候尤为要注意。
Synchronized method(){}是用来保证同一时刻某方法不会被多个线程同时执行,以免冲突.
Synchronized (object){}是用来保证在执行大括号中代码时,独占object这个对象,所以,
如果当执行到这里时,如果object正被其他同步方法调用,则必须等候object被解锁,才能进入该程序块,而当进入该程序块时,将对object上锁,执行完以后解锁,以免在此期间,其他程序用到object.
当某个方法被同步化,则内部的属性也被同步化。获得monitor的进程独占这些资源直到解锁。这样做保证某些变量被各个线程共享,并且变化是一致的