草庐IT

SpringBoot中异步注解@Async介绍

全部标签

java - 在 JBoss EAP6 中为异步 session bean 方法创建两个线程池?

在我的应用程序中,我在两个不同的地方对sessionbean使用@Asynchronous业务方法。每个都有自己的逻辑和要求,所以理想情况下我想为每个配置最大线程池大小。看起来JBossEAP6.2.2EAP只允许一个异步线程池。有没有办法创建两个,或者我是否只需要创建一个足以容纳两个的池(并且失去限制任何一个的能力)? 最佳答案 我希望您已经看过关于https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.2/pdf/

java - 如何刷新 Log4J2 中的异步记录器(使用中断器)

我通过设置使用Log4J2“使所有记录器异步”部分:-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector.https://logging.apache.org/log4j/2.x/manual/async.html我处理了很多日志,然后在退出前停止了附加程序:org.apache.logging.log4j.core.LoggercoreLogger=(org.apache.logging.log4j.core.Logger)logger;org.apache.logg

java - Springboot @ServerEndPoint "Failed to find the root WebApplicationContext."

我在使用带@ServerEndPoint注释类的spring时遇到问题我正在使用Springboot1.2.3,我正在尝试弄清楚如何拥有端点的单个实例@SpringBootApplication@EnableJpaRepositories@EnableWebSocketpublicclassApplicationServer{publicstaticvoidmain(String[]args){SpringApplication.run(ApplicationServer.class,args);}}Spring配置:@ConditionalOnWebApplication@Confi

java - 使用 Jersey 异步流式传输大量响应

我想允许客户端(包括非常慢的客户端)从JAX-RS(Jersey)网络服务下载大文件,但我被卡住了。JAX-RS中的异步功能似乎不支持这一点。AsyncResponse解决了您必须等待资源在服务器端变得可用时的问题,但您只能调用AsyncResponse.resume(Object)只有一次。之后,响应正常处理。慢速或恶意客户端将阻塞工作线程,直到所有字节都传输完毕。这里没有异步IO。jersey中的ChunkedOutput将block存储在无限制的内存队列中,并且不提供任何公共(public)接口(interface)来检查该队列的大小。它专为缓慢的小块流而设计。足够慢的客户端最终

java - 单声道异步异常处理

我只是想弄清楚异常处理在react堆库中是如何工作的。考虑以下示例:publicclassFluxTest{@TestpublicvoidtestIt()throwsInterruptedException{Schedulersingle=Schedulers.single();CountDownLatchlatch=newCountDownLatch(1);Mono.just("hey").subscribeOn(single).doOnError(e->System.out.println("ERROR1:"+e.getMessage())).doOnTerminate((r,e)

java - 注解处理器,获取方法参数的修饰符

我目前在一个项目中使用Java的自定义注释。我想强制我的注解的用户,如果他用@Foo对方法进行注解,他必须在方法参数列表中至少声明一个finalbooleanb。所以它应该看起来像这样:@Foopublicvoidfoo(finalbooleanb){}@Foopublicvoidbar(){}//Thisshouldresultinanerror使用注释处理器,我可以检索变量的类型但不能检索最终修饰符。如果我想检索如下代码所示的修饰符集,尽管最终修饰符出现在参数上,但该集合将始终为空。for(VariableElementparameter:method.getParameters(

TreeView 上 TreeItems 的 JavaFX 优化异步延迟加载

我有一个应用程序,其中有一个TreeView,其中有TreeItems持有大量叶子TreeItem。在TreeView中拥有大量的TreeItem会显着损害应用程序的性能,为了避免这种情况,我将做的是一次只允许展开一个非叶TreeItem,并且一旦TreeItem被折叠,我将清除它的子项,并在需要时异步加载它们(当用户展开TreeItem时)。奇怪的问题是,在下面的这个测试中,当我第一次点击treeitem上的展开箭头时,子项加载正常,如果我折叠它(这将清除子项)并再次展开它,有时它会工作和其他程序开始占用30%的CPU数分钟,然后恢复运行。更奇怪的是,如果我双击TreeItem将其展

java - Java 中的异步函数调用

假设您有三个类A、B、C,每个类都有自己的搜索功能。我想同时使用所有三个搜索功能运行一个键(比如'searchKey')。如果我从三个函数之一得到结果,如何停止其他两个搜索函数?此外,这会比我在每个类中都有一个不同的HashMap并一个接一个地搜索它们的情况运行得更快吗,因为搜索解析为恒定的时间复杂度? 最佳答案 您需要公开一个公共(public)方法来停止搜索,例如取消各自类中线程的标志。关于你的第二点,HashMap中关键搜索的时间复杂度通常是O(1)(最坏情况O(n)如果这些键在同一个哈希桶中)。所以没有太多的优化空间,因为它

Java - 使用 ReentrantLock 异步运行作业?

下面的代码允许我们运行一个作业,同时通过使用ReentrantLock确保一次只能运行一个作业。有没有办法修改此代码以异步运行job.call()并在启动线程之前将MyConcurrentJobException返回给客户端?我们尝试将try/catch/finallyblock包装在一个新的Thread中,但是unlock和lock必须在同一个线程中发生所以我们得到一个IllegalMonitorException??finalstaticLocklock=newReentrantLock();publicObjectrunJob(Stringdesc,Callablejob,boo

Java - 网络 - 最佳实践 - 混契约(Contract)步/异步命令

我正在用Java开发一个小型客户端-服务器程序。客户端和服务器通过一个tcp连接连接。通信的大部分部分是异步的(随时可能发生),但我希望某些部分是同步的(例如发送命令的ACK)。我使用一个从套接字的InputStream读取命令并引发onCommand()事件的线程。命令本身由命令设计模式推进。什么是最佳实践方法(Java),以便在不丢失可能同时出现的其他命令的情况下等待ACK?con.sendPacket(newPacket("ABC"));//waitforABC_ACKedit1把它想象成一个FTP连接,但数据和控制命令都在同一个连接上。我想在后台数据流运行时捕获对控制命令的响应