Future方法实现异步,要求jdk版本1.8以上:
@Autowired
private DeviceDataService deviceDataService;
public void asynInfoDispose(String topic, String content){
//jdk1.8以上异步编程实现
//注意,主线程获得任务结果会导致主线程阻塞,无法方便得知任务何时完成
Future future = executor.submit(()->{
//异步时执行的方法
deviceDataService.filterData(topic,content);
});
}
缺点,主线获取到任务结果时会导致主线程阻塞,无法方便得知任务何时完成,无法方便获取任务执行结果
优点,Java中真正实现异步,编程简单,易实现
Springboot中只有注解实现异步@Async:
import com.springboot_info_state.service.DeviceDataService; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @Service public class DeviceDataServiceImpl implements DeviceDataService { @Async @Override public void filterData(String topic, String content) { System.out.println("异步"); } }