Web 应用程序中的 Spring 线程

2024-01-25

我正在为MMO浏览器游戏编写服务器,我需要创建几个线程。 他们将一直运行,并有一些睡眠时间。 使用这样的弹簧线是个好主意吗?

@Component
@Scope("prototype")
public class PrintTask2 implements Runnable{

String name;

public void setName(String name){
    this.name = name;
}

@Override
public void run() {

    System.out.println(name + " is running");

    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println(name + " is running");

}

}

任务执行器作为 bean 实现?

<bean id="taskExecutor"
       class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="5" />
    <property name="maxPoolSize" value="10" />
    <property name="WaitForTasksToCompleteOnShutdown" value="true" />
</bean>

此外,线程是在也定义为 bean 的单例中启动的。

我的方法可能有什么问题?


您可以使用@Scheduled(fixedDelay = 5000)定期执行方法。记得设置一下@EnableScheduling对于包含您的 main 方法的类。

有两种选择@Scheduled注释-fixedDelayand fixedRate.

fixedDelay将在最后一次执行完成后延迟 X 毫秒继续执行您的方法。

fixedRate将在固定日期连续执行您的方法。因此,无论最后一次执行是否完成,每 X 毫秒都会执行此方法。

您还可以使用@Async如果你想一次处理一堆对象。再次,您需要添加@EnableAsync使用您的 main 方法到您的班级。

Example

//Remember to set @EnableScheduling
//in the class containing your main method
@SpringBootApplication
@EnableScheduling
@EnableAsync
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class);
    }
}

@Component
public class ScheduledTasks {

List<YourObject> myObjects;

    //This method will run every 5 second.
    @Scheduled(fixedDelay = 5000)
    public void yourMethodName() {
        //This will process all of your objects all at once using treads
        for(YourObject yo : myObjects){
            yo.process();
        }
    }
}

public class YourObject {

    Integer someTest = 0;

    @Async
    public void process() {
       someTest++;
    }
}

Bonus您可以通过扩展来摆脱池大小的 XML 配置AsyncConfigurerSupport并覆盖getAsyncExecutor。有关此方法的更多信息可以在以下链接中找到

我建议你看一下:

https://spring.io/guides/gs/scheduling-tasks/ https://spring.io/guides/gs/scheduling-tasks/

https://spring.io/guides/gs/async-method/ https://spring.io/guides/gs/async-method/

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

Web 应用程序中的 Spring 线程 的相关文章

随机推荐

  • 通过累积串联将嵌套列表转换为非嵌套列表

    我想像这样转换嵌套列表 l lt list A list a list 1 b list 2 B list cd list c list 3 4 5 d list 6 7 8 e list c 9 10 进入列表 o lt list A c
  • 通过 ODBC“十进制值缩放导致数据截断”

    当我尝试在 MS Access 中查看 ODBC 表时 收到错误 十进制值缩放导致数据截断 我知道返回错误的字段 并且 Access 在查询时能够识别该字段 但我无法查看结果 Error记录 并且错误不断出现 我试过了CDbl 没有运气 A
  • 停止 IntentService 的正确方法

    我正在使用 IntentService 将图像上传到服务器 我的问题是我不知道如何 何时停止服务 当我在 onHandleIntent Intent 中调用 stopself 时 所有在 IntentService 队列中等待的 Inten
  • Typescript 模块创建 AMD 与 Common JS

    任何 Typescript 专家都可以澄清一下在使用 Typescript 时何时以及为何选择 AMD 与 Common JS 来创建模块吗 AMD 用于浏览器 例如 RequireJS 原因是它允许并行下载文件 因为网络延迟是主要瓶颈 C
  • 创建 HTML(PHP 或 Jquery)的最佳实践?

    我有一个 JavaScript 对象 其中包含一些信息 我可以想到两个选项来从这个对象创建 HTML 我想知道哪一种是正确的做事方式 这只是所有偏好吗 1 使用 JavaScript 循环遍历这个数组并使用 Jquery 创建 HTML 2
  • 生成 10000 位随机序列

    有没有比在循环中附加 0 和 1 更有效的方法来在 Python 中生成 10 kBit 10 000 位 随机二进制序列 如果您想要一个随机二进制序列 那么生成适当范围内的随机整数可能是最快的 import random s random
  • 实时卡中的 OpenGL?

    我一直在研究 glass GDK 和 glass 原生 Java 开发 我有一个在 Glass 上运行良好的开放 GL 应用程序 使用标准 Android 约定 我希望将其移植到 GDK 以利用语音触发器等功能 虽然我当然可以轻松地将它用作
  • 从哪里开始学习 Linux DMA/设备驱动/内存分配

    我正在移植 调试设备驱动程序 由另一个内核模块使用 并面临死胡同 因为 dma sync single for device 因内核错误而失败 我不知道这个函数应该做什么 而且谷歌搜索也没有什么帮助 所以我可能需要了解更多关于这个东西的知识
  • 正则表达式删除记事本++中标签之间的文本

    我有这样的代码
  • 我的 iframe 无法与 UIWebView 配合使用

    我已经测试过我的iframe到处都运行得很好 但是iOS in Objective C 它不起作用UIWebView 这是我的代码 有人可以帮助我吗 谢谢 self webView scrollView scrollEnabled NO N
  • 目录中所有文件内容的总大小[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我使用ls or du 我得到每个文件占用的磁盘空间量 我需要打开每个文件并计算字节数时得到的文件和子目录中所有数据的总和 如果我能在不
  • 如何扩展 LoginUrlAuthenticationEntryPoint 或如何实现 AuthenticationEntryPoint

    我正在尝试这样做 让 spring security 在登录页面的查询字符串中添加 return to url https stackoverflow com q 4696905 即 让spring告诉登录页面我来自哪里 我有一些 SSO
  • 在 Yii 的控制器中创建构造方法

    我刚刚开始学习Yii 我在那里创建了一个PostController控制器 在这个控制器中 我有一个使用要求Sessions 所以我创建了一个构造函数方法 其代码如下 public session public function const
  • open() 不适用于隐藏文件 python

    我想使用 python 在隐藏文件夹中创建并写入 txt 文件 我正在使用这段代码 file name hi txt temp path myfolder docs file name file open temp path w file
  • 在实践中,std::sort 和 std::stable_sort 之间的性能差距有多大?

    两者都应该以 O n log n 的速度运行 但一般来说排序比 stable sort 更快 实践中的性能差距有多大 你对此有一些经验吗 我想要对大量大小约为 20 字节的结构进行排序 对于我来说 结果的稳定性很好 但这不是必须的 目前底层
  • C++ 联合中“受保护”的意义是什么

    受保护的成员或函数有什么用途吗 您不能从联合继承 因此没有子项可以访问它 它是否提供了功能用途 或者只是因为移除它很麻烦而存在 protected in a union变得完全等价于private 但是这个津贴没有坏处 并且避免了额外的特殊
  • 循环播放特定 Gmail 标签的邮件(而非线程)

    我添加了具体的messages 而且不是全部thread 到标签to process通过以下步骤 Turn Conversation ModeGmail 设置中关闭 贴上标签to process到特定消息 当显示消息时 我可以确认只有特定的
  • 如何在Python中使用循环创建元组[重复]

    这个问题在这里已经有答案了 我想创建这个元组 a 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 我尝试过这个 a 1 1 1 for i in range 2 10 a a i
  • 访问 coo_matrix 中的元素

    这是一个非常简单的问题 对于像 coo matrix 这样的 SciPy 稀疏矩阵 如何访问单个元素 类比 Eigen 线性代数库 可以使用 coeffRef 访问元素 i j 如下所示 myMatrix coeffRef i j 来自 c
  • Web 应用程序中的 Spring 线程

    我正在为MMO浏览器游戏编写服务器 我需要创建几个线程 他们将一直运行 并有一些睡眠时间 使用这样的弹簧线是个好主意吗 Component Scope prototype public class PrintTask2 implements