synchonized的问题

来源:13-5 volatile作用

abel_星123

2019-09-17

1,锁住getClass()
老师我们的项目中有类似于这样的代码,这个锁的作用和我们自己定义一个锁的区别是什么?

private stattic List<String>list = new ArrayList<>();
public void test(){
sychronized(list.getClass()){
 list.add(xx)
}

2.锁住List:这样的锁与我们自己定义的一个锁的区别?以及和1中的区别?

private List<String> list = new LinkedList<>();
sychronized(list){
 list.add
}
写回答

1回答

悟空

2019-09-17

锁住getClass可以锁住类对象,全局唯一。

但是锁list并不唯一,每个实例都有这个list,所以要注意线程安全。

这实际上就是对象锁和类锁的区别,在我的免费课有详细讲解,你可以看下:

http://www.imooc.com/learn/1086

0
2
悟空
回复
abel_星123
安不安全取决于使用锁的地点和代码,和锁的形式无关,也就是说,如果正确使用,自己定义的锁并不会比其他类型的锁更加安全。
2019-09-17
共2条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程