读书人

java.lang.InterruptedException: sle

发布时间: 2012-12-27 10:17:10 作者: rapoo

java.lang.InterruptedException: sleep interrupted异常

使用单元测试,创建线程池,然后启动一个线程,在线程中sleep(5*1000),这是回报

java.lang.InterruptedException: sleep interrupted异常,原因是因为单元测试启动的主线程很快就结束了,而子线程确sleep5秒,使得主线程强行打断子线程的sleep,因此抛出异常,解决办法是可以在单元测试的最后加上sleep(10*1000),目的是不让主线程在子线程前结束。

?

?

?@Test

? ? public void getUserPwd(){

? ? ? ? Test1Thread thread1 = new Test1Thread(userService,

? ? ? ? ? ? ? ? "ptstest3", MD5Encrypt.md5("12345678"));

? ? ? ? taskExecutor.execute(thread1);

?

try {

? ? ? ? ? ? Thread.sleep(10*1000);

? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? // TODO Auto-generated catch block

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

? ? }

?

?

?

?

public class Test1Thread implements Runnable {

?

? ? public UserService userService;

? ? public String loginId;

? ? public String pwd;

?

? ? public Test1Thread(UserService userService,String loginId,String pwd){

? ? ? ? this.pwd=pwd;

? ? ? ? this.loginId=loginId;

? ? ? ? this.userService=userService;

? ? }

?

? ? /* (non-Javadoc)

? ? ?* @see java.lang.Runnable#run()

? ? ?*/

? ? @Override

? ? public void run() {

? ? ? ? // TODO Auto-generated method stub

? ? ? ? try {

? ? ? ? ? ? userService.updateUserPassword(loginId, pwd);

? ? ? ? ? ? Thread.sleep(5*1000);

? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? System.out.println("error--------");

? ? ? ? }

?

? ? }

?

}

?

?

读书人网 >编程

热点推荐