使用单元测试,创建线程池,然后启动一个线程,在线程中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--------");
}
}
}