采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如下图所示,如果我new出来两个不同的rtld1,rtld2对象分别传给thread1和thread2,与截图中只new出来一个rtld对象同时传给thread1和thread2有什么区别呢?
如果thread1和thread2中传入的是不同对象,那么两个线程之间不会共享同一个rtld,使用的是不同对象.
如果使用的是同一个对象,做写操作可能会线程不安全,具体线程是不是安全还要看你具体的代码逻辑.
赞同学的热心回答,确实是这样子的,如果new两个就达不到共用一个锁来实现锁资源让线程等待执行的目的了
老师你好,我没看明白是怎么回事,无论传给thead1和thread2的rtld是否为同一个对象,最终都会生成两个thread1和thread2,后续如果需要同步操作的话,使用是synchronized去锁同一个对象进行同步就好了,所以传入不同的rtld到底有啥区别呢?老师帮忙详细解答下
同学好,代码里面,我们利用的是同一个对象的锁,即ReentrantLockDemo类里面的lock成员变量,执行的时候,由于用的是同一个rtld,所以里面的lock是同一个,由于共享的是同一个lock,才能实现执行上的串行制约。同学说的synchronized也是需要建立在多个线程共享同一个synchronized对象的基础上才能实现线程串行的。所以你如果用两个rtld的话lock就是两个不同的对象,两个线程锁的是各自的lock,并不能达到串行执行,也就是达不到锁的目的。
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.7k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14