有时,你只是希望防止多个线程同时访问方法内部的部分代码而不是防止访问整个方法。通过这种方式分离出来的代码段被称为临界区,它也使用synchronized关键字建立。这里synchronized被用来指定某个对象,此对象的锁被用来对花括号的代码进行同步控制
synchronized(syncObj){
this code can be accessed
be only one task at a time
}
这也被称为同步控制块;在进入此代码之前,必须得到syncObj对象的锁。如果其他线程已经得到这个锁,那么就等到锁被释放之后,才能进入临界区。
通过使用同步控制块,而不是对整个方法进行同步控制,可以使多个任务访问对象的时间性能得到显著提高。