gpt4 book ai didi

Java ExecutorService 实现协助

转载 作者:行者123 更新时间:2023-12-02 00:13:35 25 4
gpt4 key购买 nike

在以下代码中,userList 获取大量数据,导致发送电子邮件花费的时间过长。

如何加快应用程序的速度,以便更快地发送 50000 封电子邮件?也许使用 ExecutorService ?

List<String[]> userList = new ArrayList<String[]>();
void getRecords() {
String [] props=null;
while (rs.next()) {
props = new String[2];
props[0] = rs.getString("useremail");
props[1] = rs.getString("active");
userList.add(props);
if (userList.size()>0) sendEmail();
}
void sendEmail() {
String [] user=null;
for (int k=0; k<userList.size(); k++) {
user = userList.get(k);
userEmail = user[0];
//send email code
}
}

最佳答案

尝试以这种方式并行化您的代码:

private final int THREADS_NUM = 20;

void sendEmail() throws InterruptedException {
ExecutorService executor = Executors.newFixedThreadPool( THREADS_NUM );
for ( String[] user : userList ) {
final String userEmail = user[0];
executor.submit( new Runnable() {
@Override
public void run() {
sendMailTo( userEmail );
}
} );
}
long timeout = ...
TimeUnit timeunit = ...
executor.shutdown();
executor.awaitTermination( timeout, timeunit );
}

void sendMailTo( String userEmail ) {
// code for sending e-mail
}

另外,请注意,如果您不想头痛 - 方法 sendMailTo 必须是无状态的。

关于Java ExecutorService 实现协助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com