课程
/后端开发
/Java
/Java高并发之魂:synchronized深度解析
同步方法中,调用了非同步方法,此时对于非同步方法来说,是否是线程安全的,这个非同步方法是否也等于拥有了锁??
2021-11-23
源自:Java高并发之魂:synchronized深度解析 4-3
正在回答
盲猜不安全,可以试一下,应该是同步执行,执行非同步方法不需要获取锁直接执行,执行同步方法才需要获取锁
我认为是安全的,即使有再多的线程访问非同步方法,由于同步方法的调用相当于只有一把锁,谁拿到谁才可以执行下一步程序,仍然是在按顺序执行,相当于课程里面讲到的第四种情况,把非同步方法写入同步方法内,大致和嵌套循环差不多,唯一需要注意的是非同步方法在进行多个线程之后,有没有足够的地址临时存储产生的结果。
以上纯属个人意见,欢迎大家斧正。
举报
从0开始彻底学会高并发场景下不得不会的synchronized
2 回答想问下方法内部定义锁和方法块不生效的原因是?
2 回答同一个方法中的被synchronized包裹的代码块与普通代码块
1 回答run方法里面的j++是不是也可能有并发的问题啊?
2 回答ShowUnSafe的对象实例化放在main方法里面为什么是线程正常的
1 回答那我是不是可以不使用创建thread对象时需要传入的类的对象的class对象。可以随便哪个类的class对象都可以呢?因为在学习对象锁的视频中老师创建的锁对象是随便的Object对象所以类锁上应该也可以随便哪个类的clas对象。还是说只能是实现Runnable接口的类的父类的对象啊?还有实现runnable接口的类对象不同类锁会失效,这种是只有this修饰才会 这样吗?对象锁中自己创建的锁对象只有一个,就算创建两个线程的对象不同但是锁对象只有一个还是只有一个可以持有锁。也就是对象锁不会失效。