Synchronize access to shared mutable data

The synchronized keyword ensures that only  a single thread will execute a statement or block at a time.

Many programmers think of synchronization solely as a means of mutual exclusion, to prevent an object from being observed in an inconsistent state

while it is being modified by another thread.

The view is correct, but it doesn't tell the whole story.

Not only dose synchronization prevent a thread from observing an ojbect in an inconsistent state, but it also ensures that

objects progress from consistent state to consistent state by an orderly sequence of state transitions that appear to execute sequentially.

Every thread entering a synchronized method or block sees the effects of all previous state transitions controlled by the same lock.

After a thread exits the synchronized region, any thread that enters a region synchronized by the same lock sees the state transition caused by that thread, if any.

You may hear it said that to improve performance, you should avoid the use of synchronization when reading or writing atomic data. This advice is dangerously wrong.

Sysnchronization is required for reliable communication between threads as well as for mutual exclusion.

In summary, whenever multiple threads share mutable data, each thread that reads or writes the data must obtain a lock.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值