在Java中,是否有一个Runnable版本旨在在当前线程中执行?

2023-11-30

JavaDoc for Runnable 状态(已添加强调)

Runnable 接口应该由任何其类实现 实例旨在由线程执行。 该类必须定义一个名为 run 的无参数方法。

该接口旨在为希望在活动时执行代码的对象提供通用协议。例如,Runnable是由Thread类实现的。处于活动状态仅仅意味着线程已经启动并且尚未停止。

此外,Runnable 提供了使类处于活动状态而不需要子类化 Thread 的方法。实现 Runnable 的类可以通过实例化 Thread 实例并将其自身作为目标传递来运行,而无需子类化 Thread。在大多数情况下,如果您只计划重写 run() 方法而不重写其他 Thread 方法,则应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应对类进行子类化。

有几个人(包括构建我正在使用的代码分析工具的人)从该声明中推断出这样一个前提:Runnable 只能用于旨在由单独线程执行的类。总的来说,我认为这就是 Runnable 接口的意图,并且我喜欢按照作者的意图使用代码。

我想要一个在当前线程上执行一些工作的类的通用接口。我更愿意使用行业标准(如果存在)。我不需要如何编写自己的界面的示例 - 我只是想知道是否已经存在。


所有正在运行的代码都是由线程执行的!无论是新线程还是当前线程,它仍然是一个线程。就是这样Callable描述它:

Callable 接口与 Runnable 类似,两者都是为实例为潜在地由另一个线程执行。

Runnable 的要点是您不必关心线程结构,只需传递一段可执行代码即可。

这可能是:

  • 在特定线程上,如SwingUtilities.invokeAndWait.
  • 在任意新线程上,如Executors.newSingleThreadScheduledExecutor.
  • 在线程池上,就像Executors.newCachedThreadPool

在我们的多核世界中,这应该不重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Java中,是否有一个Runnable版本旨在在当前线程中执行? 的相关文章

随机推荐

  • 在 Firebase Cloud Messaging 中将一个项目用于多个应用程序的优缺点

    在我们公司 我们有许多适用于 Android 和 iOS 的应用程序 我们想使用 Firebase 来推送通知 那么 我们是否需要创建新的project在每个应用程序的 Firebase 中 或者只使用一个包含所有应用程序的项目会更好吗 两
  • Neo4j Cypher:复制关系并删除节点

    我正在尝试复制节点的所有内部关系 n 到另一个节点 m 两个女巫我都知道id 在删除之前 n 但我无法提出代码 这些关系可能存在也可能不存在 有人摘录吗 您将无法从关系集合中动态创建关系类型 假设即使我们收集所有传入关系如下 START n
  • VB6 中是否有导出函数(而不是类)的方法?

    我想从 Visual Basic 6 创建一个 ActiveX DLL 我想从中调用一些公共函数 我将仅从 VB6 调用此 DLL 然而 似乎只有类被导出 有什么解决方法吗 我知道有一种方法可以使用标准 WINAPI 函数从 VB6 创建
  • 将两个 Xpath 组合成一个循环?

    我正在使用 xpath 从文档中获取信息 唯一的问题是我无法将它们组合成 1 个 for 循环 以便信息在页面上正确显示 我的代码是
  • 从 UI 选择特定时区时在 javascript/jquery 中添加类

    我正在编写如下所示的 html 代码 该代码来自此url In it 显示在 ET 时区下显示 100 正确 因为它们属于正确的日期但对于其他时区 PT MT CT AT NT 某些节目的日期不正确 代码下方的屏幕截图属于该类日程操作栏从下
  • Mysql自动更新事件

    使用 php 和 MySql 无论如何都可以在日期过期时获取数据库中的日期以自行更新 即事件名称 x 的日期为 2012 05 12 在 2012 05 13 日期应更改为 2012 05 19 从 2012 05 12 算起一周 多谢你们
  • 在哪里初始化托管 C++/CLI DLL?

    使用 C CLI 创建 DLL 时 或者我应该问 是否存在与 DllMain 等效的东西 这段初始化代码中不能调用的内容是否有任何限制 Dan 关于加载器锁 C CLI 的 CLR 延迟加载以及混合模式二进制文件的正确初始化 我昨天刚刚在这
  • Pyqt:从函数“动态”附加到 qtextedit

    我的 pyqt gui 中有一个按钮 单击该按钮会运行一个函数 该函数会执行一些冗长的数学计算 在这个函数中有很多打印语句 例如 print finished calculating task1 going on to task2 因此 通
  • java中用simplexml反序列化xml

    我正在尝试使用 SimpleXML 反序列化 xml 字符串 我查看了他们的示例 但我不确定我是否掌握了这个概念 示例 XML 验证
  • 生成不带foreignObject标签的svg

    我在用dom to image js插入 问题是 它会生成一个
  • 如何从HttpClient获取json文件?

    我正在尝试获得一个json文件来自HttpClient 但是当我添加时出现错误 subscribe imports import Injectable from angular core import HttpClient HttpHead
  • 检查文件中的行是否以特定字符串开头 - 进行一些计算

    所以这就是我想做的 我有一个巨大的文件 我想在 python 中打开它并查看每一行 如果它与某个预定的字符串匹配 我想获取紧随该字符串之后的数字 将它们全部加起来并得到平均值 该文件如下所示 Data Number of hours 34
  • 在 wpf 中拖放路径

    是否可以使用鼠标事件处理程序在 wpf 中拖放路径 特别是 我想用鼠标左键拖动路径并将其放置在网格上 如何才能做到这一点 尝试这个 鉴于 文本框名称为 TextBox1 public MainWindow Initialize UI Ini
  • 如何避免 Qt app.exec() 阻塞主线程

    我是 Qt 新手 但需要解决一个难题 我创建了一个非常简单的 GUI 我需要将其添加到现有的 C 应用程序中 问题是 我只编写了一个插入更大架构的模块 这限制了我对主线程的访问 我的代码必须驻留在以下四个函数中 Init 函数 在主线程中运
  • 到底如何在后台线程上渲染 Metal?

    这个问题是由用户界面交互引起的 例如全屏显示标题栏 该问题的答案提供了解决方案 但没有提供如何解决实施那个解决方案 解决办法是在后台线程上渲染 问题是 苹果提供的代码涵盖了很多内容 所以大部分都是无关的代码 所以即使我能理解它 使用苹果的代
  • 在 Django 中提交表单时不会调用基于通用类的视图中的 post 方法?

    我写了一个 mixin 来覆盖POST and get from kwargs of CreateView 我在做AJAX提交我的表格 我看到get from kwargs通过在控制台上打印来调用 但没有其他方法 例如post form v
  • Espresso 和 Android 联系人选择器

    我尝试使用 Espresso 的 Android 联系人选择器添加联系人 但这不起作用 这是调用联系人选择器的命令 Intent intent new Intent Intent ACTION PICK ContactsContract C
  • 实体框架/Linq to SQL:跳过并获取

    只是好奇 Skip Take 应该如何工作 我得到了我想要在客户端看到的结果 但是当我连接 AnjLab SQL Profiler 并查看正在执行的 SQL 时 它看起来好像正在查询并将整个行集返回到客户 它真的会返回所有行 然后在客户端使
  • 从 WebBrowserControl 中单击的 HtmlElement 获取 XPath

    如何从 WebBrowserControl 中单击的 HtmlElement 获取 XPath 这是我检索单击的 HtmlElement 的方法 System Windows Forms HtmlDocument document this
  • 在Java中,是否有一个Runnable版本旨在在当前线程中执行?

    JavaDoc for Runnable 状态 已添加强调 Runnable 接口应该由任何其类实现 实例旨在由线程执行 该类必须定义一个名为 run 的无参数方法 该接口旨在为希望在活动时执行代码的对象提供通用协议 例如 Runnable