黑马程序员技术交流社区
标题:
当一个同步方法已经执行,线程能够调用对象上的非同步...
[打印本页]
作者:
张强1
时间:
2013-7-27 23:33
标题:
当一个同步方法已经执行,线程能够调用对象上的非同步...
本帖最后由 杨兴庭 于 2013-7-28 23:09 编辑
当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?
作者:
张强1
时间:
2013-7-28 12:02
请高手帮我解惑啊
作者:
HM代景康
时间:
2013-7-28 12:12
可以,一个非同步方法总是可以被调用而不会有任何问题。实际上,Java 没有为非同步方法做任何检查,锁对象仅仅在同步方法或者同步代码块中检查。如果一个方法没有声明为同步,即使你在使用共享数据Java 照样会调用,而不会做检查是否安全,所以在这种情况下要特别小心。一个方法是否声明为同步取决于临界区访问(critial section access),如果方法不访问临界区(共享资源或者数据结构)就没必要声明为同步的。
作者:
toShareBeauty
时间:
2013-7-28 12:39
当然可以,同步方法内部的代码都是同步的。但是你调用的那个非同步函数,别的线程也可以调用。
作者:
Hello_world_
时间:
2013-7-28 12:50
可以的!
作者:
nuoxi0318
时间:
2013-7-28 13:57
可以,一个非同步方法总是可以被调用而不会有任何问题。实际上,Java 没有为非同步方法做任何检查,锁对象仅仅在同步方法或者同步代码块中检查。如果一个方法没有声明为同步,即使你在使用共享数据Java 照样会调用,而不会做检查是否安全,所以在这种情况下要特别小心。一个方法是否声明为同步取决于临界区访问(critial section access),如果方法不访问临界区(共享资源或者数据结构)就没必要声明为同步的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2