多线程处理写法

1.rxjava,observeOn(Schedulers.io())封装多线程,

Flowable.fromArray(ips)
.observeOn(Schedulers.io())
.flatMap(
ip -> Flowable.fromCallable(
() -> {
Boolean check = check(ip);                            checkResult.put(ip,check);                            return check;                        }
)
).blockingSubscribe();return checkResult;

2.线程池, 在线程池中执行saltStackUtil.restartJavaSync方法的同步,其返回值放入执行consummer

private static final ExecutorService executorService = Executors.newFixedThreadPool(10, new ThreadFactory() {@Override    public Thread newThread(Runnable r) {
Thread thread = new Thread(r);        thread.setName("javaOperator");        return thread;    }

});

public void restartJava(String ip, String projectName, String commitId, String jarName, String jvmArgs, Consumer<AppServerOperateResult> appServerOperateResultConsumer) throws SaltException {executorService.execute(() ->{
AppServerOperateResult appServerOperateResult = new AppServerOperateResult();        appServerOperateResult.setIp(ip);        appServerOperateResult.setProjectName(projectName);        appServerOperateResult.setCommitId(commitId);        appServerOperateResult.setJarName(jarName);        appServerOperateResult.setStartTime(new Date());        appServerOperateResult.setStatus(Constant.JAVA_APP_OPERATE_PROCESS);        appServerOperateResult.setType(Constant.JAVA_APP_OPERATE_RESTART);        appServerOperateResult.setRunParamater(jvmArgs);        Map<String, Result<Map<String, State.ApplyResult>>> stringResultMap = null;        try {
stringResultMap = saltStackUtil.restartJavaSync(ip, projectName, commitId, jarName, jvmArgs);            processResult(stringResultMap,appServerOperateResult);            appServerOperateResultConsumer.accept(appServerOperateResult);        } catch (Exception e) {
MyExceptionHandler.handlerException(e,logger);        }

});

}

3.stream,parallel()并行流执行foreach,consummer封装返回数据到checkResult Map中

Stream.of(ips).filter(ip -> ip!=null).parallel().forEach(new Consumer<String>() {@Override    public void accept(String ip) {checkResult.put(ip, check(ip, appId, appTypeCode));    }
});

return checkResult;
时间: 2024-09-17 04:53:08

多线程处理写法的相关文章

将某一目录下所有的jar文件都加入到CLASSPATH当中的简便写法

将某一目录下所有的jar文件都加入到CLASSPATH当中的简便写法 引用: http://www.javaeye.com/topic/244?page=2 中将某一目录下所有的jar文件都加入到CLASSPATH的写法,比较长:)   Quake Wang 写道 代码 FOR %%i IN ("%HIBERN8IDE%/*.jar") DO CALL "setclasspath.bat" %%i      setclasspath.bat: 代码 SET _CLA

C# 单例模式的五种写法

C# 单例模式的五种写法及优劣分析,见下文: [单例模式及常见写法](http://blog.csdn.net/jiankunking/article/details/50867050)

使用不同的CSS写法-CSS进阶

css     CSS的写法可以用以下的几种方法实现:    (1)使用Embed(嵌入样式单)排版样式:     即将CSS代码直接插入每个页面的HTML的<head>区,就象上一节看到的.使用<style>...</style>标签.例如: <style type="text/css"><!--h2 { font-family: "宋体"; font-size: 12pt; font-style: itali

求个泛型排序写法,如下。

问题描述 求个泛型排序写法,如下. public static List<T> SortAsc<T>(List<T> source, string sortby) { List<T> tlist = source.OrderBy(x => x.GetType().GetProperty(sortby)).ToList<T>(); return tlist; } 这个方法我写的,测试根本没排序,求大神指点迷津 解决方案 List<T&g

list-求循环函数的写法········

问题描述 求循环函数的写法········ 这样的一个list 我要拼接成的结果是String: 100,300,500 200,300,500 100,400,500 200,400,500 dtoList 是动态的,结果要排序,去重 解决方案 public class Test { public static void main(String[] args) { // 图片说明 // 这样的一个list 我要拼接成的结果是String: // 100,300,500 // 200,300,5

代码-指定修改某条数据的写法

问题描述 指定修改某条数据的写法 直接上代码先 模板: 代码不知道为什么显示不出来 我直接叙述吧 就是我有一个select 下面两个option 一个value是0 一个是1 我现在要在TP 的控制器里面写修改 只修改value是1的 怎么弄修改的sql语句里面的where吖? 我想的是 where id 但是对应的id我不知道怎么传值过去 控制器 public function admin(){ if(IS_POST){ print_r($_POST); } } 我现在要只修改status为0

c-C语言 关于宏的写法的问题

问题描述 C语言 关于宏的写法的问题 以下两个写法有啥区别:看到github源码上都是第二种写法.#define test(_a_b) { printf(""%c - %cn""_a_b); printf(""abcn"");} #define test1(_a_b) do{ printf(""%c - %cn""_a_b); printf(""abcn"&

探究针对GoogleChrome的CSS hack写法

本节和大家一起学习一下针对GoogleChrome谷歌浏览器的CSS hack的使用,CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法:也有人说CSS hack是一种类似作弊的手段,以欺骗浏览器的方式达到兼容的目的,是用浏览器的兼容性差异来解决浏览器的兼容性问题. CSS hack简介 CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法. CSS hack是一种类似作弊的手段,以欺骗浏览器的方式达到兼容的目的,是用浏览

Javascript模块化编程(一):模块的写法

随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑. Javascript模块化编程,已经成为一个迫切的需求.理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一种模块化编程语言,它不支持"类"(class),更遑论"模块&q