admin管理员组文章数量:1650900
/**
* @Description: 消息通知
* @Author: lizz
* @Date: 2020/5/6 19:01
* @Reviser:修改人
* @ReviseDate:修改时间
* @Revision:修改内容
**/
@Override
public void onApplicationEvent(EarlyWarnPublishEvent earlyWarnPublishEvent) {
try {
ConfigService configService = NacosFactory.createConfigService(serverAddr);
List<RiskEarlyWarn> riskEarlyWarn= riskEarlyWarnMapper.queryRiskEarlyWarn();
Future<JSONObject> js= Threads.executorService.submit(() -> {
JSONObject jss=new JSONObject();
jss.put(DATA_ANALY_FLAG_ONE,riskEarlyWarn.stream().filter(rsk->rsk.getEarlyWarnType().equals(DATA_ANALY_FLAG_ONE)).collect(Collectors.toList()));
jss.put(DATA_ANALY_FLAG_TWO,riskEarlyWarn.stream().filter(rsk->rsk.getEarlyWarnType().equals(DATA_ANALY_FLAG_TWO)).collect(Collectors.toList()));
jss.put(DATA_ANALY_FLAG_THREE,riskEarlyWarn.stream().filter(rsk->rsk.getEarlyWarnType().equals(DATA_ANALY_FLAG_THREE)).collect(Collectors.toList()));
return jss;});
configService.publishConfig(dataId,group,js.get().toJSONString());
} catch (NacosException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
js.get()会阻塞知道jsfeature执行完,只是介绍一种写法。这个实际提升不大 因为阻塞之前也没执行任何代码(因为业务中就这么多代码)
get()方法可以当任务结束后返回一个结果,如果调用时,工作还没有结束,则会阻塞线程,直到任务执行完毕
get(long timeout,TimeUnit unit)做多等待timeout的时间就会返回结果
cancel(boolean mayInterruptIfRunning)方法可以用来停止一个任务,如果任务可以停止(通过mayInterruptIfRunning来进行判断),则可以返回true,如果任务已经完成或者已经停止,或者这个任务无法停止,则会返回false.
isDone()方法判断当前方法是否完成
isCancel()方法判断当前方法是否取消
版权声明:本文标题:多线程feature使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729532567a1204995.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论