Tag: 异步

Spring 3:如何从TaskExecutor调用@Async注释方法

我是Spring的异步任务执行新手,所以如果这听起来像个愚蠢的问题,请原谅我。 我读到@Async注释是从Spring 3.x开始在方法级别引入的,该方法的调用将异步发生。 我还读到我们可以在spring配置文件中配置ThreadPoolTask​​Executor。 我无法理解的是,如何从tak执行器调用@Async注释方法让我们假设 – AsyncTaskExecutor 之前我们曾经做过类似的事情: @Autowired protected AsyncTaskExecutor executor; 接着 executor.submit() 我无法理解@Async注释方法和TaskExecutor之间的关系。 我尝试在互联网上搜索很多,但却无法得到任何相关信息。 有人可以为此提供一个例子。

在Java中播放框架异步处理和阻止I / O.

我的应用程序使用Play框架来处理REST请求。 我需要在http请求处理程序中执行一些可能持久的阻塞I / O操作。 与此同时,我希望有效地处理一些持久的请求。 如下所述: http://www.playframework.com/documentation/2.2.0/JavaAsync 持久的操作可以异步运行。 另一方面,如下所述: http://www.playframework.com/documentation/2.2.x/ThreadPools Play框架使用相同的默认线程池,其中执行所有应用程序代码。 至少在Java api中,不可能在不同的线程池上运行异步工作。 所以,我的问题是,是否值得以异步方式运行可能阻塞的I / O操作,考虑到这样的操作无论如何都使用相同的线程池这一事实。 或者也许最好增加默认的线程池大小,并且在这种情况下不要打扰异步api? (这样至少代码可读性会高得多)

我应该如何使用AsynchronousServerSocketChannel接受连接?

我想用Java 7和NIO 2编写一个异步服务器。 但是我应该如何使用AsynchronousServerSocketChannel ? 例如,如果我开始: final AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open().bind( new InetSocketAddress(port)); 然后,当我执行server.accept() ,程序终止,因为该调用是异步的 。 如果我将该代码放在无限循环中,则抛出AcceptPendingException 。 有关如何使用AsynchronousServerSocketChannel编写简单异步服务器的任何建议? 这是我的完整示例(类似于JavaDoc中的示例): import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.AsynchronousServerSocketChannel; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; public class AsyncServer { public static void main(String[] args) { int port = 8060; try { final AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open().bind( new InetSocketAddress(port)); System.out.println(“Server listening […]

如何在Struts2中加载长时间运行的初始化数据时避免WSOD(空白屏幕)?

我需要做以下事情: 用户登录。 重定向到欢迎屏幕。 在加载大量记录时查看欢迎屏幕。 重定向到工作屏幕。 我正在寻找一种方法在Action类中做这样的事情: public class LinkAction extends ActionSupport implements SessionAware { @Autowired private ServiceDelegate myService; public String welcome() { new Runnable() { @Override public void run() { myService.getLoadsOfData(); //redirect to the next action } }.run(); // this is where the user // goes to look at the welcome screen return “welcome”; } […]

如何从asyn调用返回结果

我在他们自己的类中拥有所有异步调用,因此我不希望将全局变量设置为异步。 为此,我想返回对象,例如我的asunc postProcess方法中的字符串。 可以这样做吗? 下面是我的类的一般结构,我想从onPostExecute()返回一个String。 我看到代理在其他地方被提到但是这看起来非常混乱,确定有一种方法可以为类或方法提供返回类型吗? class GetStuffAsyncly extends AsyncTask { // my vars…. public myconstructor(String dialogMessage, Context con) { this.qDialog = new ProgressDialog(con); this.dialogString = dialogMessage; this.context = con; } /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); do stuff like fire dialog } @Override […]

Spring 3.x – @Async方法不是由任务执行器同时调用的

我正在尝试在我的Service类中实现并发方法调用。 我的服务类中有一些注释为@Async的方法,我试图同时调用所有这些方法。 但这些方法是按顺序执行的。 这是我的服务类(虚拟): @Service public class TestService { public SomeDataType getSOmeDataType() { try { List a = retrieveDataA().get(); List b = retrieveDataB().get(); List c = retrieveDataC().get(); List d = retrieveDataD().get(); List e = retrieveDataE().get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return referralDetailsReferenceData; } @Async private Future<List> retrieveDataA() […]

为使用Spring 3.0的方法使用@Async时提供超时值

我仔细查看了文档但无法找到是否有一种方法可以指定使用Spring 3.0使用@Async注释方法时产生的异步操作的超时。 有没有办法做到这一点? 我认为这在触发异步计算时非常重要。

等待Async Volley请求的结果并将其返回

下面是一个方法,我试图通过调用getSelf()来检索用户对象。 问题是结果始终为null,因为Volley请求在返回结果时尚未完成。 我对异步进程有些新意,所以我不确定让方法等待API调用结果返回UserBean对象的最佳方法。 谁能给我一些帮助? public UserBean getSelf(String url){ RpcJSONObject jsonRequest = new RpcJSONObject(“getSelf”, new JSONArray()); JsonObjectRequest userRequest = new JsonObjectRequest(Request.Method.POST, url, jsonRequest, new Response.Listener() { @Override public void onResponse(JSONObject response) { String result; try { result = response.getString(“result”); Gson gson = new Gson(); java.lang.reflect.Type listType = new TypeToken() {}.getType(); //HOW DO I RETURN THIS VALUE […]

为什么选择JMS进行异步解决方案? 为什么它比简单的实体bean更好?

在我参与的大多数项目中,异步解决方案的选择一直是很多讨论的来源…… 每次单个实体bean足以管理队列时:我们只是在表中存储消息(票证),处理cron将队列取消堆栈。 这个简单的解决方案具有非常简单的优点,它基于数据库的事务上下文,我们可以在执行期间管理接收消息的状态。 因此,我提出以下问题: 1)我们对使用JMS有什么兴趣? JMS有哪些好处? 2)在哪种情况下更喜欢JMS与实体bean? 感谢您的回复和反馈!

控制器中的Spring Boot @Async方法同步执行

我的[基本] Spring Boot应用程序接受来自浏览器的请求,通过jQuery.get()发送,并且应该立即收到响应 – 例如“ 您的请求已经排队 ”。 为此,我写了一个控制器: @Controller public class DoSomeWorkController { @Autowired private final DoWorkService workService; @RequestMapping(“/doSomeWork”) @ResponseBody public String doSomeWork() { workService.doWork(); // time consuming operation return “Your request has been queued.”; } } DoWorkServiceImpl类实现了DoWorkService接口,非常简单。 它有一种方法来执行耗时的任务。 我不需要从此服务调用返回任何内容,因为电子邮件将在工作结束时发送,包括失败或成功方案。 所以它实际上看起来像: @Service public class DoWorkServiceImpl implements DoWorkService { @Async(“workExecutor”) @Override public void doWork() { try […]