首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法是否从单独的线程调用,在调用线程上运行?

方法是否从单独的线程调用,在调用线程上运行?
EN

Stack Overflow用户
提问于 2013-09-11 22:42:44
回答 3查看 2.2K关注 0票数 4

我已经使用线程2-3天了,我有一个关于方法的快速问题。我正在制作一个Android应用程序,它从主UI线程开始(为了清晰起见,我们把它称为"UI线程“)。我正在使用以下代码生成一个新线程:

代码语言:javascript
复制
Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        someMethod();
    }

});
thread.start();

我的问题是,someMethod()是否也会在我刚刚创建的新线程上运行,因为我是从那里调用它的?或者它会在UI线程上运行?作为参考,someMethod()位于创建新线程的方法之外。

如果someMethod()不会在新线程上运行,我如何使它运行?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-11 22:43:51

someMethod()是否也会在我刚刚创建的新线程上运行,因为我是从那里调用它的?

是的,事情就是这样的。方法就是代码。它独立于控制线程,而控制线程恰好在给定的时间点和时间内运行。这也意味着,如果有多个cpu/核,那么在任何给定的时间点都可能有多个线程执行该代码。

票数 6
EN

Stack Overflow用户

发布于 2013-09-11 23:34:13

您应该看看Callable<V>Future<T>,在那里您可以调用方法,它们是在调用线程上处理的而不是。不管怎么说,你现在不应该和线程打交道。有更多的现代方法可用。

这里有一个链接,可以为您提供一个想法,http://www.vogella.com/articles/JavaConcurrency/article.html#futures

票数 2
EN

Stack Overflow用户

发布于 2013-09-11 22:45:00

run所采取的所有操作,包括调用someMethod,都保留在新的Thread上,除非该代码告诉Java在另一个线程中运行某些东西(比如使用invokeLater或使用Executor)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18752501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档