减少代码的执行时间

时间:2016-09-21 05:24:46

标签: java performance optimization

我正在为客户使用struts2生成基于Web的发票,在发送发票时我正在向用户发送电子邮件和短信。生成发票后,我将页面重定向到生成的发票页面。

我的代码如下所示

#!/bin/bash
CURRENT_DATE=`date +'%d%m%Y'`
Year=`date +%Y`
Temp_Path=/appinfprd/bi/infogix/IA83/InfogixClient/Scripts/IRP/
File_Path=/bishare/DLSFTP/
cd $File_Path
echo $Year
find /bishare/DLSFTP/$Year*  -type d | ls -lrt > $Temp_Path/New_Bishare_File_Data_$CURRENT_DATE.txt

其中DB是类的对象,用于插入数据以及发送电子邮件和短信服务。 我的问题是在生成发票发送电子邮件和发送短信时花费了太多时间。

我认为另一种方式是生成发票后我将重定向到生成的发票页面,我将向用户发送短信和电子邮件,但问题是如果用户立即点击其他页面链接,则可能存在问题。

我该如何缩短这段时间?

2 个答案:

答案 0 :(得分:0)

您应该回答的第一件事是:sending emailsending sms可以并行完成吗?如果这是真的,那么你可以为每个创建一个线程并让它们一起执行。完成两个线程后,您的操作就完成了。这样,执行的总时间将是最长线程的时间。

我认为主要的问题是,用户只会在发送电子邮件和短信时看到恼人的浏览器等待ststus。您可以使用Struts 2执行并等待拦截器(http://struts.apache.org/docs/execute-and-wait-interceptor.html)。

  

ExecuteAndWaitInterceptor非常适合运行长期操作   在后台同时向用户显示一个很好的进度表。这个   还可以防止HTTP请求在操作采取时超时   超过5或10分钟。

请注意,此拦截器不会缩短执行时间,但会使用户友好。

答案 1 :(得分:0)

这些耗时的电子邮件和短信任务可以放在不同的队列中,并使用多线程并行处理它们。请查看生产者/消费者模式:https://dzone.com/articles/producer-consumer-pattern