admin管理员组

文章数量:1650766

  /**
     * @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