Java跨线程方法调用的疑惑
PHPz
PHPz 2017-04-17 13:00:52
[Java讨论组]

假定有一个继承自Thread的类,run方法为

while(1)
{
    ;
}

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

PHPz
PHPz

学习是最好的投资!

全部回复(2)
怪我咯

Q:请问在此线程外调用此类的Foo方法会打断run方法的循环吗?
A:不会,因为run是由新的线程唤起的,与你调用foo方法的线程属于平行线程

Q:在此线程外调用此线程的方法会造成同步问题吗?
A:分两种情况:

  1. 线程外调用此线程对象的方法foo1,foo1操作了对象bar,而线程的run方法也操作了对象bar,那么相当于两个线程都在并行操作bar,这时是有同步问题的,bar的最终状态是不确定的
  2. foo1没有操作与run方法相同的对象,不会有同步问题

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

PHP中文网

我在想你怎么涉及到Thread变量的,另外都私有了,你还能涉及到?
另外你这while循环都没有退出的代码,怎么调用都打断不了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号