首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java接口问题

Java接口问题
EN

Stack Overflow用户
提问于 2010-09-25 03:32:13
回答 7查看 354关注 0票数 4

我很困惑(java的新手):

在实现Runnable接口时,必须覆盖run()方法以获得线程执行功能。实现此接口会使您的对象成为Runnable (?)类型。如何通过简单地实现Runnable接口来“注入”线程功能?基本上,当您实例化一个实现Runnable的类时,线程功能中发生了什么?我可能误解了一些基本的面向对象的概念。谢谢。

在执行thread.start()时,是不是JVM“知道”要寻找可运行的对象?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-09-25 03:35:49

当您创建Runnable的实现时,没有任何东西将您的类与JVM线程容量联系在一起。Runnable接口的实例类似于任何其他接口的实例,只是另一个实例。

如果希望使用JVM的线程系统,则必须使用Thread类的新实例,该实例将在单独的线程中运行Runnable实现的run()方法。

有关创建新线程的所有逻辑都是由Thread类完成的。

票数 9
EN

Stack Overflow用户

发布于 2010-09-25 03:35:28

Runnable表示“可以”在单独的线程中运行的工作,也可以不在单独的线程中运行(您可以自己调用Runnable.run() )。

但是,要在单独的线程中调用Runnable,然后执行如下操作

代码语言:javascript
复制
Thread thread = new Thread(new MyRunnable());
thread.start(); // MyRunnable will now be invoked in a new thread
票数 4
EN

Stack Overflow用户

发布于 2010-09-25 03:35:41

实际上,在后台并没有发生什么特别的事情。

实现Runnable接口可以确保您的类将具有public void run()方法。

当你把你的自定义类传递到一个Thread中时,神奇的事情就发生了。

代码语言:javascript
复制
Thread th = new Thread(new YourCustomRunnable());
th.start();

在上面的代码中,将创建一个新的Thread,并且run()方法中的代码将在另一个线程中运行。

在内部,线程将调用您的自定义run()方法,并使该代码在单独的线程上运行。从技术上讲,可以做到以下几点:

代码语言:javascript
复制
Runnable r = new MyCustomRunnable();
r.run();

在上面的代码中,r不会在单独的线程上运行。

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

https://stackoverflow.com/questions/3790355

复制
相关文章

相似问题

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