在開發中,很多時候會異步處理一些業務需求,在不影響主業務的情況下,還需要做一些附加的耗時長的操作,可以在主代碼中
開一個線程(主要有三種線程):
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();