假定有一个继承自Thread的类,run方法为
这样一个死循环。
而此类有一个方法foo()并涉及到Thread类中私有变量,请问在此线程外调用此类的Foo方法会打断run方法的循环吗?在此线程外调用此线程的方法会造成同步问题吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Q:请问在此线程外调用此类的Foo方法会打断run方法的循环吗?
A:不会,因为run是由新的线程唤起的,与你调用foo方法的线程属于平行线程
Q:在此线程外调用此线程的方法会造成同步问题吗?
A:分两种情况:
1.线程外调用此线程对象的方法foo1,foo1操作了对象bar,而线程的run方法也操作了对象bar,那么相当于两个线程都在并行操作bar,这时是有同步问题的,bar的最终状态是不确定的
2.foo1没有操作与run方法相同的对象,不会有同步问题
总的来说,你在一个线程直接调用另一个线程对象的任何方法,就是一个普通的函数调用,这个调用过程是同步的,与这个对象是不是一个线程对象,没有关系。