synchronized为什么能解决线程安全问题?

synchronized在英语中翻译成同步,同步想必大家都不陌生。例如同步调用,有A,B两个方法,必须要先调用A并且获得A的返回值才能去调用B,也就是说,想做下一步,必须要拿到上一步的返回值。
同样的道理,使用了synchronized的代码,当线程t1进入的时候,另一个线程若t2想进入,就必须要得到返回值才能进入,怎么得到返回值呢?那就要等t1出来了才会有返回值。这就是多线程中常说的加锁
使用synchronized的代码我们可以想象成将他们放到了一个房间,我前边所说的返回值就相当于这个房间的钥匙,进入这个房间的线程同时会把钥匙带进去,当它出来的时候会将钥匙仍在地上(释放资源),然后其他线程过来抢钥匙(争夺CPU执行权),以此类推。

转载自:https://www.cnblogs.com/rainie-love/p/8531667.html

展开阅读全文

没有更多推荐了,返回首页