先来复习下多线程中,同步函数/同步代码块吧。
同步代码块
用法:
synchronized(对象)
{需要被同步的代码}
同步可以解决安全问题的根本原因就在那个对象上。其中对象如同锁。持有锁的线程可以在同步中执行。没有持有锁的线程即使获取cpu的执行权,也进不去,因为没有获取锁。
同步函数
格式:
在函数上加上synchronized修饰符即可。
那么同步函数用的是哪一个锁呢?
函数需要被对象调用。那么函数都有一个所属对象引用。就是this。所以同步函数使用的锁是this。
那么问题来了:对象是怎么起到锁的作用的?
在一个线程进入同步代码块或者函数时,这个起到锁的对象是做了什么变化,来阻止另一个线程进入同步代码块或函数的。
谢谢指教。一起学习。 |
|