有两种方法可以做到这一点。首先,我将解释反应性和webflux的好方法。@GetMapping(value = "/anothertest")

public Mono rest() {

log.info("request number " + reqCounter++);

CompletableFuture stringCompletableFuture = sendRequestWithJavaHttpClient().thenApply(x -> "test: " + x);

Duration between = Duration.between(

LocalTime.now(),

LocalTime.parse("14:01:00")// I am assuming there is a time we send data back

);

return Mono.first(Mono.delay(between)).then(Mono.fromFuture(stringCompletableFuture));

}

private CompletableFuture sendRequestWithJavaHttpClient() {

return CompletableFuture.supplyAsync(() -> {

// do some logic here

return "hello world.";

});

}

正如我们对第一个单声道所说,要延迟响应,它将等待时间到来,然后再进行函数调用。这是很好的方法,因为通过这种方法,不会阻塞响应。所有客户都需要等待。您将需要使用spring的webflux。

第二种也不酷的方法是阻塞线程。这个用spring mvc@GetMapping(value = "/caract/opcoes/acoes/disponiveis*")

public ResponseEntity getDatasCaractOpcoesAcoesDisponiveis() throws Exception {

log.info("request number " + reqCounter++);

Duration between = Duration.between(

LocalTime.now(),

LocalTime.parse("14:10:00")

);

log.info("will sleep "+between.toMillis());

Thread.sleep(between.toMillis());

return new ResponseEntity("hello world", HttpStatus.OK);

}

这将阻塞服务器线程,直到时间到了。关于这个的问题是tomcat的线程数。默认值为200,因此您的应用程序最多可以有200个请求,之后,tomcat将无法再建立连接。您可以通过在application.properties中更改server.tomcat.max-threads = 500来增加它

如果从设计的角度来看,我对这两种方法的看法不好,因为客户不应等待。我会回应,直到时间到来。如果时间合适,那就回应真实的结果。这样,客户端可以在没有负载的情况下请求任意数量的请求。并且服务器端将不会有任何负载,因为没有东西被阻止。

java dispo lock_java - 在Java中同步请求响应 - SO中文参考 - www.soinside.com相关推荐

  1. java 流拆分_java - 在Java流中拆分字符串? - SO中文参考 - www.soinside.com

    尝试一下:String fileName = "file.txt"; try { Map wordCount = Files.lines(Path.of(fileName)) .f ...

  2. java中receive功能_java - 在onReceive()回调中的synchronized块 - SO中文参考 - www.soinside.com...

    我正在阅读this page关于如何编程Android与USB配件通信.其中一个步骤涉及注册BroadcastReceiver以获得用户的许可: IntentFilter filter = new I ...

  3. java 动态增加线程,java - 在Java中动态停止线程 - SO中文参考 - www.soinside.com

    我需要一些有关线程的帮助,我需要制作一个可以动态关闭和打开线程的程序(这意味着当我需要一个线程时,它将运行,如果不再需要它,它将停止),现在我的问题是?如果我仅终止该线程的run方法,将其计为线程停止 ...

  4. java applog_java - 通过Logback登录到App Engine request_log - SO中文参考 - www.soinside.com

    我当前部署的当前Logback配置如下(您可以说我的构想已耗尽...): %-4relative [%thread] %-5level %logger{35} - %msg application.l ...

  5. 如何用Java制作hwid验证_java - 将帐户登录+ HWID锁定添加到Java程序的最安全方法是什么? - SO中文参考 - www.soinside.com...

    是的,你可以做到,但你需要重新设计你的应用程序.您应该将应用程序分成两个不同的应用程序.(简而言之:您还有很长的路要走) 1-客户端应用程序:Java应用程序与最终用户交互的位置. 2-服务器应用程序 ...

  6. java keytool 导入证书_java - Keytool无法导入证书 - SO中文参考 - www.soinside.com

    在尝试导入证书时,我收到一条错误,导致无法导入,因为在这种情况下别名(tomcat)已经存在 $ keytool -import -v -alias tomcat -file tomcat.crt - ...

  7. java modelmapper_java - 使用ModelMapper映射抽象类型的字段 - SO中文参考 - www.soinside.com...

    我有以下课堂知识层次:public abstract class Base { protected Boolean baseBoolean; } public class A extends Base ...

  8. java添加zip并下载,java - 使用java创建zip并使其可下载。 - SO中文参考 - www.soinside.com...

    我有一个程序,我想用它来创建一个位于目录中的文件的压缩文件. 该程序运行,但在chrome中,它无法下载,说网络错误. 在Mozilla中,它说Ut0ij4ld.ZIP.part无法保存,因为源文件无 ...

  9. java swing中英文支持,java - Swing国际化 - 如何在运行时更新语言 - SO中文参考 - www.soinside.com...

    我通过扩展JLabel并覆盖getText来返回对语言选择的评估来解决这个问题. 您还需要一些发布/订阅机制来"告诉"您的标签语言已更改. 在这里我使用updateLanguage ...

最新文章

  1. 王立飞:专注己之长 跨界求发展
  2. linux u 驱动程序,在uClinux中增加自己的设备驱动程序
  3. 当你扛不住的时候就读一遍
  4. mdkstc系列器件支持包下载_Qorvo PAC系列高集成度电机控制芯片及应用
  5. 将原生SQL功能Hibernate到您的Spring Data Repository中
  6. 前端学习(1247):购物车1
  7. 一个人成为废材的9大原因
  8. springboot整合Mybatis提示org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
  9. ACE editor 在线代码编辑极其高亮
  10. socket网络编程(tcp udp)
  11. 主流数据库/国产数据库有哪些 如何适配国产数据库
  12. 麦克风和扬声器选型介绍
  13. 编译原理 -- 词法分析程序设计
  14. win7打开计算机一片空白,Win7系统打开文件夹查看选项发现一片空白怎么办
  15. 0704-Scala函数式编程高级
  16. MyIM2006开发报告1:概要
  17. 好玩的Python库tqdm
  18. 实战PyQt5: 141-QChart图表之箱形图
  19. 小白看了也能搭建物联网项目——物联网开发板——QD-mini板
  20. SD卡数据恢复教程:3种工具一键恢复SD卡误删的照片

热门文章

  1. android studio 运行闪退,ubuntu上在androidstudio中启动emulator闪退的解决方法
  2. 数仓搭建——DWD层
  3. Seaborn数据可视化
  4. oracle 删除主键级联删除唯一索引
  5. EduCoder-程序设计技术R-循环结构程序设计2-(第1关:C循环-求平均成绩)(第2关:C循环-求各位数字)(第3关:C循环-求阶乘之和)(第4关:C循环-水仙花数)(第5关:C循环
  6. Windows 更新安装更新时,可能会收到“更新失败。安装一些更新时出现问题,且错误为:0x80073701,0x800f0988解决方案
  7. 什么?作为程序员你还不知道人工智能搜索引擎?
  8. eclipse突然报错:An internal error occurred during: “Compute launch button tooltip“.并且运行main方法时Run As后面是空
  9. 一劳永逸让windows 64位操作系统 禁止强制驱动签名
  10. 阿德莱德大学计算机科学学士学分,留学360:阿德莱德大学软件工程计算机科学学士专业简析...