1、定义锁对象的原因?只用synchronized关键字就是作为区分不行吗?为什么非得传入一个锁对象?
如果不定义锁,在操作数据的时候,其他线程也可以访问这个数据,很容易造成数据的不安全性,典型的例子就是买票系统,要有好多个窗口再卖票,但是票的数量是一定的,如果不加锁,那么好多个窗口在操作同一张票时应该怎么办呢?
而传入一个锁对象就是为要对同步的数据加锁,以防止其他线程来访问,一个线程访问完了,才允许另一个线程来访问。
2、关于锁对象的任意性?Object类可以作为对象传入,程序中的其他类型对象也可以传入。有什么区别吗?
其实你是对对象了解的不够深刻,每一个对象都是不一样的,体现在内存中就是存储地址的不一样,所以只要对象不一样,创建的锁就不一样,也就达到了加锁的目的 |