15.7. Action 中使用线程

背景,在Action中发送邮件,阻塞程序继续执行并返回500,使用 Thread 实现异步发送,因为我们并不关心邮件是否到达,只需正常发送即可。

	public String execute(){

		...
		...

			try {
				// Send email

				Thread sendmail = new Thread(new Runnable() {
					@Override
					public void run() {
						try {
							log.info("sendEmail Begin");
							sender.sendEmail(form.getEmail(), form.getText());
							log.info("sendEmail End");
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
				sendmail.setName("sendmail" + sendmail.getId() + "logingName:" + form.getLoginname());
				sendmail.start();

			} catch (Exception e) {
				e.printStackTrace();
				log.info("sendEmail Error");
			}

			...
			...

			log.info("CreateTrialAccount:" + form.toString());
			return Action.SUCCESS;
	}

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-09-28 05:00:53

15.7. Action 中使用线程的相关文章

Java开发中的线程安全选择与Swing[Z]

安全 Swing API的设计目标是强大.灵活和易用.特别地,我们希望能让程序员们方便地建立新的Swing组件,不论是从头开始还是通过扩展我们所提供的一些组件. 出于这个目的,我们不要求Swing组件支持多线程访问.相反,我们向组件发送请求并在单一线程中执行请求. 本文讨论线程和Swing组件.目的不仅是为了帮助你以线程安全的方式使用Swing API,而且解释了我们为什么会选择现在这样的线程方案. 本文包括以下内容: 单线程规则:Swing线程在同一时刻仅能被一个线程所访问.一般来说,这个线程

java-Java中同步线程不是应该先中断先继续吗,为什么我的没有?求大神指点

问题描述 Java中同步线程不是应该先中断先继续吗,为什么我的没有?求大神指点 代码如下: public class BuyTicketMain { public static void main(String args[ ]) { TicketHouse officer = new TicketHouse(); Thread zhangfei,likui,wangwu; zhangfei = new Thread(officer); zhangfei.setName("张飞"); l

C# 如何让 多线程中每个线程间隔毫秒执行同一个方法?

问题描述 多线程的好处让效率提高很多倍,但是在某些情况下要求操作同一个方法的时候要求有间隔,这个间隔当然是毫秒级别的否则多线程的意义就体现不出来,本问题就是怎么让多线程中每个线程间隔毫秒执行同一个方法,测试代码如下:privatevoidbtnTest_Click(objectsender,EventArgse){TestManyThreadtest=newTestManyThread();test.Start();} 主要代码如下classTestManyThread{privatestati

详解Java编程中对线程的中断处理_java

1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时--都需要通过一个线程去取消另一个线程正在执行的任务.Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制. 如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此.中断机制是如何工作的?捕获或检测到中断后,是抛出InterruptedException还是重设中断状态以及在方法中吞掉中断状态会有什么后果?Thread.st

Strust2关于jsp页面中的属性值怎么封装成类传入action中?

问题描述 我用的是在Struts2中在jsp页通过struts2特殊标签讲对应的属性值封装成类传入action中,可是总是报空指针异常:目前所包含的条件有:1.实体类:其中包括了实体对象的各种set和get方法:2.实体映射文件:<hibernate-mapping><classname="com.rzq.bean.Userinfo"table="userinfo"catalog="rzq_3aweb"><idnam

用strut2集成SSH框架Action中调用Dao层方法出现空指针异常

问题描述 自己弄了spring的配置文件,和strut的配置文件这个是服务层的代码publicclassSerservicesimplementsISerservices{privateICstServiceDAOServicedao;publicvoidsetDao(ICstServiceDAOServicedao){this.dao=dao;}publicvoidsave(CstServicebean){dao.save(bean);}}这个是Action的代码publicclassSerA

Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的所有方法:(即把数据保存到域中) 主要使用的是方式2和方式3: 方式1:直接获取ServletApi,核心类是ServletActionContext提供的静态的方法; 1 package com.bie.lesson04; 2 3 import javax.servlet.ServletConte

addactionerror-在jsp页面接收action中addActionError()的错误信息

问题描述 在jsp页面接收action中addActionError()的错误信息 struts.xml Login.jsp action.javapublic String execute() { if (!userService.isValidUser(userName)) { this.addActionError(""不存在此用户""); return INPUT; } }想要实现jsp页面点击按钮以alert()的方式弹出错误信息,请为各位大神该怎么实现

Java基础-创建Java程序中的线程池

程序|创建 线程是Java的一大特性,它可以是给定的指令序列.给定的方法中定义的变量或者一些共享数据(类一级的变量).在Java中每个线程有自己的堆栈和程序计数器(PC),其中堆栈是用来跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前线程正在执行的指令. 在通常情况下,一个线程不能访问另外一个线程的堆栈变量,而且这个线程必须处于如下状态之一: 1.排队状态(Ready),在用户创建了一个线程以后,这个线程不会立即运行.当线程中的方法start()被调