使用 Appengine 进行多线程处理

2024-06-30

既然Appengine不允许java多线程,那么我们如何将现有的多线程代码迁移到该平台呢?

例如我有以下代码:

    Thread t = new Thread() {
        public boolean alive = true;
        public void run() {
            while (alive) {
                try {
                    Thread.sleep(5000);    
                    getNewNotifications();
                } catch (InterruptedException e) {
                    //  Do nothing
                } catch (IOException e) {
                } 
            }
        }
    };
    t.start()

函数 getNewNotification() 执行一些 Rest/HTTP 调用,其中可能包括一些可能无限期返回的其他进程。我已阅读Task Queue是解决方案,但是我们如何将这个简单的代码转换为 App 引擎友好的代码呢?

上面的代码是如何使用任务队列实现的呢?例如调用getNewNotifications()每五秒一次。

该函数将从服务器获取一些结果,解析结果,然后根据结果执行它需要执行的活动/工作。


您可以在 java appengine 中创建线程。

ThreadManager.createThreadForCurrentRequest(new Runnable(){...});

See https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/ThreadManager https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/ThreadManager

当请求完成时,前端线程将被中断并终止,但生成的后端线程可以根据需要运行多久。另外,当你捕获 InterruptedException 时,尝试做更多的事情;接受此异常可能会导致实例保持在线状态,并且会花费您更多的钱。

如果你想让你的代码与 Runnable 和任务队列一起工作,只需实现 Runnable 和 DeferredTask 即可;两个接口具有相同的方法签名。要调度延迟任务,只需执行 QueueFactory.getQueue("queueName").add( TaskOptions.Builder.withPayload(YourDeferredTask));

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

使用 Appengine 进行多线程处理 的相关文章

  • 如何在 JRuby 中初始化 SQLite3 JDBC 驱动程序?

    如何在不使用活动记录的情况下通过 JDBC 访问 SQLite3 下面是一个使用 JRuby 1 6 6 Ruby 1 8 兼容模式 和 jdbc sqlite3 3 7 2 的示例 require rubygems require jdb
  • 如何添加对嵌入消息的反应 JDA

    当我执行命令 verify 时 我尝试发送和嵌入消息 然后它发送嵌入消息 但我找不到如何添加反应 我已经嵌入了消息并发送了它 但可以添加反应 import Main Bot import net dv8tion jda core Embed
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • 如何对文本文件执行二分搜索

    我有一个大文本文件 5Mb 我在 Android 应用程序中使用它 我将文件创建为预先排序的字符串列表 并且文件一旦创建就不会更改 如何对此文件的内容执行二分搜索 而不需要逐行读取来查找匹配的字符串 由于文件的内容不会改变 因此您可以将文件
  • 无法远程连接JMX?

    由于某些奇怪的原因 我无法使用VisualVM or jconsole到 JMX 用于启动要监控的VM的参数 Dcom sun management jmxremote Dcom sun management jmxremote authe
  • 如果没有发生触摸事件,Android SurfaceView 会变慢

    我正在制作一款游戏 除了游戏循环之外一切都很顺利 我正在使用 SurfaceView 并绘制 2D Sprites 位图 目前游戏是一艘穿过小行星带的飞船 飞船停留在屏幕中央 手机向任一方向倾斜以移动小行星 小行星改变位置而不是玩家 当旧的
  • 当我尝试使用 LWJGL 库加载声音时,为什么会收到错误“NoClassDefFoundError: sun/misc/Unsafe”?

    This is the screenshot of my Eclipse project files 当我尝试启动时出现以下错误new Sound Res MouseClick ogg 我的班级中的对象AudioPlayer在第 15 行
  • 当不读取带有 URL 的 QR 码时,zxing QRCodeReader 中出现 ChecksumException

    如果我扫描带有 URL 的 QR 码 以下代码可以完美且快速地运行 然而 如果我用简单的字符串或数字序列解码 QR 码 这就是我想要做的 它有时会随机工作 但 99 的情况下它会失败并出现 ChecksumException if webc
  • Spring Boot数据休息中的日期问题

    当我处理日期时 我遇到了春季数据休息的问题 简而言之 就是推迟一天的日期 例如 如果我有 1111 11 11 它会返回给我 1111 11 10 SO 中有一些相关的帖子 ex1 https stackoverflow com quest
  • 从 Iphone 本机客户端使用 Google App Engine 进行身份验证

    我想创建一个 Iphone 游戏 用户可以使用他们的 facebook 凭据登录并通过在 Google App Engine 上运行的我的服务器进行身份验证 我已经在 iPhone 和 Google App Engine 上使用了 Face
  • 有人可以推荐 java 8 模式来替换 switch 语句吗?

    我有以下代码 public class A private String type String getType return type 现在在许多代码位置我都有这样的代码 switch a geType case A return new
  • 什么是运行时绑定?

    根据 Android 开发者指南 Intent 是一个提供运行时绑定独立组件之间 例如两个活动 什么是 运行时绑定 继承创建类型兼容性 它允许超类引用 引用子类的对象 反过来则不然 超类引用 指的是 子类的对象 只能用于 访问继承的和重写的
  • 从 android 将用户注册到 QuickBlox 用户

    我正在尝试在我的 Android 应用程序中使用 QuickBlox 我阅读了指南并导入了示例 一切正常 我更改了一些用户可以使用 EditText 作为用户名和另一个密码登录的内容 并且效果很好 但现在我想添加一个注册按钮 使用户能够注册
  • 在 Eclipse 中默认将类设为 Final 吗?

    有没有办法让 Eclipse 中的类默认为final 即 在保存操作中 还是在创建新类对话框中 这确实是一个 hack 但是您可以在 Eclipse 设置中设置以下代码模板 在 Java gt 代码样式 gt 代码模板 gt 代码 gt 新
  • Java:检查数组的相等性(顺序无关紧要)

    我有两个String数组 比方说 String s1 a b c String s2 c a b 这些数组应该相等 我想以 最干净 的方式检查它们的相等性 我尝试使用Arrays equals s1 s2 但我得到了一个错误的答案 我想这个
  • Jersey/JAX-RS :在响应标头中返回内容长度而不是分块传输编码

    我正在使用 Jersey 创建 RESTful API 资源 并且ResponseBuilder生成响应 RESTful 资源的示例代码 public class infoResource GET Path service id Produ
  • 数组等于忽略顺序[重复]

    这个问题在这里已经有答案了 可能的重复 Java 检查数组的相等性 顺序无关紧要 https stackoverflow com questions 10154305 java checking equality of arrays ord
  • 在内存对象缓存中开发

    我正在开发一个基于网络的医疗应用程序 需要创建一个小型内存对象缓存 这是我的用例 我们需要显示需要某些东西 血液 肾脏等 的人提交的请求列表 并且它不会是一个巨大的列表 因为在某一天对血液或其他任何东西的请求将是有限的 请注意 我们不想使用
  • Java双精度求和问题

    我想知道为什么我会收到此错误 这是Eclipse调试的显示日志 var double 2 8 tot getIva java lang Double 0 17 var tot get double 2 9699999999999998 我不
  • RMI服务器异常

    当我尝试运行使用远程注册表的服务器时 我收到以下来自 RMI 的异常 我的 Server2 类中 main 方法的注册表代码是 Registry registry LocateRegistry getRegistry 192 168 1 4

随机推荐

  • 传递给 WCF 服务的可选查询字符串参数

    我想知道如何使用 string limit WebOperationContext Current IncomingRequest UriTemplateMatch QueryParameters Limit 在我的wcf中这个方法 Cit
  • 如何捕获 google 地图的无效 API 密钥

    我有这个代码 如果密钥无效 则会弹出警报 但我想在这种情况下执行一些操作 但我不知道如何连接它 有任何想法吗 Google 不提供检查 Google 地图 API 密钥的外部方法 因此 您无法使用例如查询某些服务 此代码有效吗abcde12
  • 在 QThread.exit() 上立即停止处理事件队列

    我正在构建一个 Qt GUI 应用程序 它使用 QThread QObject 组合充当在主线程之外执行操作的工作人员 Via moveToThread QObject 被移动到 QThread 中 这样 我的工作线程就可以拥有在事件循环
  • Rails 资产:仅预编译一项资产?

    目前我们有一个 Rails 应用程序 但我有一个关于资产预编译的问题 每次我编辑一个文件 样式表或 JavaScript 文件 时 我们都必须运行 bundle exec rake assets precompile 然后再次上传所有内容
  • Git-Flow 撤消已完成的功能分支

    如果您想 撤消 功能分支 您有哪些选择 假设您添加了一项新功能supercool feature您完成后 合并到开发中并删除功能分支 然后进入发布版本 但你的用户真的不喜欢这个supercool feature 我如何撤消 倒回 反转这个已
  • 如何获得DiVs等级?

    html div class div class p strong span style color FF0000 Content1 span strong p p style text align center Content2 img
  • Spring:了解 @SessionAttributes 与 @Scope('session') 之间的区别

    Case 1 Scope Session public class Employee Controller public class EmployeeController Autowired private Employee employe
  • 如何在 JSON 输出上强制采用 ISO 格式“YYYY-MM-DDThh:mm:ss.sss”?

    我有一个 ASP NET WebApi2 api 它返回一些 JSON 格式的时间戳 时间戳具有毫秒分辨率 通常我会得到这种格式的时间戳 这很好 YYYY MM DDThh mm ss sss 不幸的是 如果时间戳恰好用整秒对日期进行编码
  • log4js-node-DEP0004 - Angular 12 karma 单元测试中的弃用警告

    在全新的 Angular 12 应用程序中运行单元测试时 我收到以下弃用警告 节点 14940 log4js node DEP0004 弃用警告 模式 d DATE 已被弃用 因为它在使用时会引起混乱 请改用 d DATETIME why
  • 登录自定义配置源

    我正在编写一个自定义的过程ConfigurationSource ConfigurationProvider访问存储在 Spring Cloud Config Server 中的配置 我希望能够将错误和跟踪信息写入日志 但到目前为止还没有找
  • Android 前台服务通知未显示

    我正在尝试启动前台服务 我收到服务确实启动的通知 但通知总是被抑制 我仔细检查了应用程序是否允许在我的设备上的应用程序信息中显示通知 这是我的代码 private void showNotification Intent notificat
  • 实施数据库——如何开始

    我已经尝试学习编程有一段时间了 我学过 Java 和 Python 并且对它们的语法很满意 最近 我想利用我所学到的知识从头开始编写有形的软件 我想实现一个数据库引擎 类似于 NoSQL 数据库 我整理了一份小文档 类似于我在编码过程中遵循
  • 融合位置有时会停止

    我一直在开发一个跟踪用户位置的应用程序 为此 我使用了谷歌播放服务位置模块 又名融合位置 总而言之 一切正常 但有时 完全随机 我根本不再收到来自谷歌位置服务的位置更新 我的意思是 我的应用程序工作正常 但没有位置更新 不仅如此 如果我启动
  • 如何在 Visual Studio Code 中显示引用计数?

    我想在 Visual Studio Code 中显示引用计数 我该怎么做 此功能称为 CodeLens 在 Visual Studio 中的菜单中找到它Options 文本编辑器 所有语言 CodeLens 在 Visual Studio
  • 词汇表中的多个(嵌套)角色

    在我的 Sphinx 文档中 我想创建一个术语表 可能包含 math 或其他角色 glossary math f x Description 有什么方法可以使用与术语表条目具有相同样式的文本来引用此条目吗 term f x Works bu
  • 解释耶拿的推论

    在耶拿 我使用 InfModel 类创建了一个 RDFS 推理模型 InfModel infmodel ModelFactory createRDFSModel schema data 给定来自 infmodel 的推断语句 我们如何获得用
  • PayPal REST API:通过重定向 URL 或 Webhook 调用履行订单/付款?

    我正在致力于将 PayPal REST API 集成到我的 Symfony 2 Web 应用程序中 我不确定完成订单 付款的正确时间 地点 与金额 客户数据等其他参数一起 我将两个 URL 传输到 PayPal API 一个是接受付款时用户
  • CAltimeter 回调永远不会触发

    使用我的 6 我一直在尝试使用 CoreMotion 的新 CMAltimeter 读取相对高度和压力 但是回调永远不会触发 我有一个非常相似的设置 它使用加速度计 陀螺仪和磁力计 他们似乎都工作得很好 想知道是否有人设法阅读 void v
  • php 32位日期解析1901年12月13日之前的日期

    我很高兴使用strtotime http www php net manual en function strtotime php在我的开发机器上解析日期 其中一些日期是 1800 年代 一个极端的例子是 1500 年代 但我的开发机是64
  • 使用 Appengine 进行多线程处理

    既然Appengine不允许java多线程 那么我们如何将现有的多线程代码迁移到该平台呢 例如我有以下代码 Thread t new Thread public boolean alive true public void run whil