【发布时间】:2015-05-11 16:16:29
【问题描述】:
- 我正在开发一个我想在其中使用的 Spring-MVC 应用程序
线程,这样我就可以进行数据库事务、电子邮件发送、
即发即弃查询更快。不幸的是,他们不是
在生产服务器上工作。我放了一个system.out,它不是
进入线程本身。我有thread.start()。
- 对于应用程序服务器,我使用的是 apache-tomcat。我会发布 server.xml 和我使用线程的地方。
- 还有一个问题。我想开始时发出 thread.start() 线程。当线程中的任务完成时,线程是否 自动死机并清除该线程占用的内存?
GroupMemberServiceImpl :
Thread thread = new Thread(() -> {
if (!(existingMember == null)) {
if (!(this.groupMembersDAO.checkIfMemberAlreadyExists(existingMember.getUsername(), groupId))) {
members.setMemberUsername(members.getMemberUsername().toLowerCase());
members.setMemberactivated(true);
createToken(existingMember.getFirstName(),members.getMemberUsername(), members.isAccesslevel(), groupId);
WaitingMembers waitingMembers = new WaitingMembers();
waitingMembers.setGroupAccountId(groupId);
waitingMembers.setMemberEmail(members.getMemberUsername());
waitingMembers.setNickName(nickName);
this.waitingMembersService.addMemberInWaiting(waitingMembers);
}
} else {
GroupAccount groupAccount = this.groupAccountService.getGroupById(groupId);
WaitingMembers waitingMembers = new WaitingMembers();
waitingMembers.setGroupAccountId(groupId);
waitingMembers.setMemberEmail(members.getMemberUsername());
waitingMembers.setNickName(nickName);
this.waitingMembersService.addMemberInWaiting(waitingMembers);
Person inviter = this.personService.findPersonByUsername(groupAccount.getAdminUsername());
sendFirstTimeGroupUserAccountActivationEmail(nickName, members, inviter.getFirstName(), groupAccount.getGroupName(), groupId);
}
});
thread.start();
我使用线程的方式有问题吗?有什么复杂的方法可以防止这个问题?
我在生产中使用 https、压缩和缓存。
Server.xml 用于生产:
<Connector port="80" protocol="HTTP/1.1" compression="force" compressionMinSize="1024"
connectionTimeout="20000"
redirectPort="443" URIEncoding="utf-8"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/x-javascript,application/javascript"/>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="200" compression="force"
compressionMinSize="1024" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="/etc/ssl/private/my-keystore.jks" keystorePass="password" URIEncoding="utf-8"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/x-javascript,application/javascript"
/>
任何帮助都会很好。非常感谢。
【问题讨论】:
标签: java multithreading spring spring-mvc tomcat