Tag: 异步

使用带有返回值的同步方法包装一系列异步调用

我当前的代码使用一系列异步进程,最终结果。 我需要以这样的方式包装每一个,每个都通过同步方法访问,结果作为返回值。 我想使用执行程序服务来执行此操作,以便允许许多这些服务同时发生。 我觉得Future可能与我的实现相关,但我无法找到一个很好的方法来实现这一点。 我现在拥有的: public class DoAJob { ResultObject result; public void stepOne() { // Passes self in for a callback otherComponent.doStepOne(this); } // Called back by otherComponent once it has completed doStepOne public void stepTwo(IntermediateData d) { otherComponent.doStepTwo(this, d); } // Called back by otherComponent once it has completed doStepTwo public void stepThree(ResultObject […]

如何同步两个异步任务?

我的问题是我有两个异步任务,它们进行一种矩阵乘法。 因此,两个任务都访问相同的矩阵。 一个是上部,另一个是下部。 对于内存保存问题,我使用ArrayLists并删除不需要更长时间的条目。 问题在于,在两个任务中都存在循环运行,并且在该循环结束时它应该等待另一个任务。 但我不知道该怎么做。 任务1: protected Void doInBackground(Void… paramArrayOfParams) { android.os.Debug.waitForDebugger(); for(j=1; j<(size+1); j++) { …. try{ othertask.wait(); }catch(InterruptedException e){} //wait for other task(); } 任务2: protected Void doInBackground(Void… paramArrayOfParams) { android.os.Debug.waitForDebugger(); for(j=1; j<(size+1); j++) { …. notifyAll(); //notifythatroundisfinished(); } 我试图使用通知和等待,但似乎这不是解决问题。 我不知道可以用来解决问题的任何其他方法。 在两个任务都在运行时,实际上是否有可能等待另外两个任务?

有没有办法自动创建Mongo编解码器?

我愿意将我的代码从mongojack迁移到支持新的异步mongo驱动程序的代码。 然而,我发现新的编码/解码方式是通过Codec ,我不认为自己为模型中的每个类编写了一个Codec 。 这就是为什么我宁愿写一个给定类创建Codec 。 但是我不知道怎么样,也不知道是否已经有一些努力试图达到同样的目的。 是否有一些libs可以实现我想要的? 如果没有,实现它的最佳方法是什么。 (我知道我应该在那里的某处使用CodecProvider ,但我仍然不知道从哪里开始)

ActiveMQ:没有经纪人的新手消费者

我正在编写一个从队列中消耗的JMS客户端。 如果重要的话,我的经纪人是activemq。 一个要求是即使经纪人关闭,客户也应该开始。 在这种情况下,它应该表现得好像队列中没有消息,并且一旦代理启动并且消息开始相应的行为。 问题是在我的代码中: connectionFactory = new ActiveMQConnectionFactory(url); Connection connection = connectionFactory.createConnection(); connection.start() 如果代理已关闭,那么它会卡在connection.start() 。 虽然我想要的是connection.start()以静默方式返回并继续尝试在后台连接并消耗消息,而不能消息。 我怎样才能做到这一点。

Java中的异步事件调度

我正在将一个C#程序移植到Java中,它大量使用委托和委托的BeginInvoke方法来异步通知事件。 以数据通信线程为例。 它可能必须通知另一个工作线程的状态以及GUI。 在我看来,通知不同类的各种事件的最佳方式是有一个IClassNameHereWatcher接口,它定义了“发布”事件需要通知的所有类型的事件,然后是需要的每个类。监听将实现此接口并将自己注册为侦听器。 我不太确定的是如何使这个异步。 这是我所指的大概: public interface IFrobWatcher { void frobDidSomething(); void frobReceivedData(object data); } public class Frob implements Runnable { List watchers = new ArrayList(); private void run() { while (true) { // Long running task if (blah) notifyWeDidSomething(); notifyOfData(someDataObject); } } public void addWatcher(IFrobWatcher watcher) { watchers.Add(watcher); } private void notifyWeDidSomething() { […]

spring无阻碍rest“发送并忘记”

我正在编写一个无阻塞的Spring Rest控制器。 我的客户应发送请求,不关心响应,也不需要等待。 这是我的服务器代码: @RestController @EnableAsync public class testController { @RequestMapping(value = “test”, method = RequestMethod.GET) public ResponseEntity test() throws InterruptedException { timeConsumingMethod(); System.out.println(“I’m should be first”); return new ResponseEntity(“the server is processing your request”, HttpStatus.OK); } @Async private void timeConsumingMethod() throws InterruptedException { Thread.sleep(1000*5); System.out.println(“I’m should be second!”); } 但是,当我使用(POSTMAN,Chrome等)调用http:// localhost:8181 / test时 ,我在服务器日志中得到以下信息: […]

Servlet异步处理请求

当我正在探索NodeJS应用程序和Java应用程序如何处理请求时,我遇到了Servlet对请求的异步处理。 从我在不同的地方读到的: 请求将由来自Servlet容器的HTTP线程接收和处理,并且在阻塞操作(如I / O)的情况下,请求可以移交给另一个Threadpool,并且接收请求的HTTP线程可以返回接收并处理下一个请求。 现在,来自Threadpool的工作人员将占用耗时的阻塞操作。 如果我理解的是正确的,我有以下问题: 即使是处理阻塞操作的线程也会等待该操作完成,因此阻塞资源(并且处理的线程数等于内核数),如果我是正确的话。 通过使用异步处理,这里获得了什么? 如果没有,请赐教。

Servlet 3.1 – 多部分异步处理

我正在测试Servlet 3.1 API来处理多部分请求。 我有兴趣同步处理一些部分(文本字段)和其他异步(文件字段)。 乍一看似乎它在Servlet 3.1中不可用(在异步上下文中完全异步通过request.getInputStream()或类似于apache-commons-fileupload库的多部分处理)。 有没有办法使用Servlet 3.1获得此同步/异步处理? 在此先感谢您的时间! 🙂

Spring框架事件

我正在阅读spring框架文档,并发现了一个使用ApplicationContext在Spring中引发事件的部分。 在阅读了几段后,我发现春季事件同步发生。 有没有办法提出异步事件? 非常感谢您的帮助。 我正在寻找类似的东西,这将有助于我完成我的模块。

Spring Async DeferredResult在Tomcat 8中不起作用

我使用Spring 4.0.5和Servlet API 3.1.0创建了一个异步MVC应用程序。 使用Firefox 24,异步行为在Jetty 8.0中运行良好,但我无法在Tomcat 8.0和Firefox 24中使用它。我正在使用DeferredResult来管理异步请求。 知道我错过了什么吗? 它可能是一些Tomcat设置或web.xml中的某些内容,因为完全相同的Java代码在Jetty中运行良好。 当异步请求最终有结果并且应该写入响应时,我看到记录了以下消息: WebAsyncManager – Dispatching request to resume processing RequestResponseBodyMethodProcessor – Written [true] as “application/json” using MappingJacksonHttpMessageConvertor DispatcherServlet – Null ModelAndView returned to DispatcherServlet with name ‘app’: assuming HandlerAdapter completed request handling DispatcherServlet – Successfully completed request 长时间运行的请求永远不会回到我的浏览器,最终我在Tomcat日志中看到这个超时错误: CoyoteAdapter.asyncDispatch Exception while processing an asynchronous request […]