在开发中,很多时候会异步处理一些业务需求,在不影响主业务的情况下,还需要做一些附加的耗时长的操作,可以在主代码中
开一个线程(主要有三种线程):
1.new ARunnable类,实现Runnable接口,复写run方法:
public class ARunnable implements Runnable { private ARunnableBuss aRunnableBuss; private Dto dto; public ARunnable (ARunnableBuss aRunnableBuss, Dto dto) { this.aRunnableBuss= aRunnableBuss; this.dto= dto; }//有参构造 /** * 执行run方法 */ @Override public void run() { aRunnableBuss.run1(dto);//实际处理业务的方法 } }
2.new ARunnableBuss实际处理业务的类,带一个run1方法:
@Service @Slf4j public class ARunnableBuss { @Autowired private EmailSendMsgHandle emailSendMsgHandle; //可以注入service
public void run1(InOrderEntryDto inOrderEntryDto) { //TODO...发邮件或者其他耗时操作 } }
3.实际主业务中使用:
Runnable runn = new ARunnable(aRunnableBuss, dto);
//将Runnable接口的子类对象作为参数传递给Thread类的构造函数
Thread thread = new Thread(runn);
//开启线程处理业务
thread.start();