Synchronization 翻译成"同步"其实是一个不合理的解释, 因为只能保证运行了操作,但不能保证操作的顺序.
在Java中,有多种方法,比如, 同步锁, concurrent data structures, wait/notify(condition synchronization) 和 volatile. (方法会持续更进)
当两个或两个以上operation没有properly synchronized(处于并发状态中), 并且至少有一个的操作时写时,data race就会发生,这时候导致的错误也可以算作是bug, 除了compile error和logic eroor之外的bug。
Java中Synchronized的语句.
public synchronized void increase()
public void increase() {
synchronize(this) {
value--;
}
}
类似,保证这一段代码只能被一个线程同时执行。
在Java中, synchronize method = synchornize(this) object
synchronize static method = synchronize (Counter.class), 把一整个class锁住,就和上文锁住代码段是一样的。
网友评论