开发者社区> 问答> 正文

Java跨线程方法调用的疑惑

假定有一个继承自Thread的类,run方法为
screenshot
这样一个死循环。
而此类有一个方法foo()并涉及到Thread类中私有变量,请问在此线程外调用此类的Foo方法会打断run方法的循环吗?在此线程外调用此线程的方法会造成同步问题吗?

展开
收起
蛮大人123 2016-02-28 18:34:27 2203 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    Q:请问在此线程外调用此类的Foo方法会打断run方法的循环吗?
    A:不会,因为run是由新的线程唤起的,与你调用foo方法的线程属于平行线程
    Q:在此线程外调用此线程的方法会造成同步问题吗?
    A:分两种情况:
    1.线程外调用此线程对象的方法foo1,foo1操作了对象bar,而线程的run方法也操作了对象bar,那么相当于两个线程都在并行操作bar,这时是有同步问题的,bar的最终状态是不确定的
    2.foo1没有操作与run方法相同的对象,不会有同步问题

    总的来说,你在一个线程直接调用另一个线程对象的任何方法,就是一个普通的函数调用,这个调用过程是同步的,与这个对象是不是一个线程对象,没有关系。

    2019-07-17 18:49:59
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载