概述

主要谈一谈 Java使用fork/koin类 实现的并发排序 以及对于Stream流的支持的splitetor

mismatch() -> 寻找两个数组 第一次出现数据不一致的下标

parallelPrefix() -> 对数组进行,累加求和

parallelSetAll() -> 对数组进行置数,

parallelSort() -> 并行排序

Spliterator() -> 对数组进行切分(切分后的数据为所有的数据的组合)

奇数 x/2+1 11->6

偶数 x/2 10 ==>5

public class Use_Arrays {

@Test

public void test_mismatch() {

int []x =new int[] {1,2,3,4};

int []y =new int[] {1,3,4,5};

int index = Arrays.mismatch(x, y);

System.out.println(index);

}

@Test

public void test_parallelPrefix() {

int []x =new int[] {1,2,3,4};

//f2=f1+f2

//f3=f2+f3

Arrays.parallelPrefix(x, (k,v)->k+v);

System.out.println(Arrays.toString(x));

// 实现1-100累加求和

int []y =new int[100];

Arrays.parallelSetAll(y, k->k=1);

Arrays.parallelPrefix(y, (k,v)->k+v);

System.out.println(Arrays.toString(y));

}

@Test

public void test_parallelSetAll() {

int []x =new int[100];

x[0]=1;

Arrays.parallelSetAll(x, y->y+1);

System.out.println(Arrays.toString(x));

}

@Test

public void test_parallSort() {

IntStream stream = new Random().ints(0, 1000).limit(1000);

int[] array = stream.toArray();

System.out.println(Arrays.toString(array));

Arrays.parallelSort(array);

System.out.println(Arrays.toString(array));

}

@Test

public void test_spliterator() {

int []x =new int[11];

Arrays.parallelSetAll(x, k->k+=1);

System.out.println(Arrays.toString(x));

Spliterator.OfInt int0_100 = Arrays.spliterator(x);

int [] y=new int[(int) int0_100.estimateSize()];

int i=0;

System.out.println(int0_100.estimateSize());

System.out.println(int0_100.characteristics());

System.out.println(int0_100.getExactSizeIfKnown());

//spliterator.forEachRemaining((int k)->System.out.println(k));

OfInt int1_50 = int0_100.trySplit();

OfInt int2_25 = int1_50.trySplit();

int0_100.forEachRemaining((int k)->System.out.print(k+" "));

System.out.println();

int1_50.forEachRemaining((int k)->System.out.print(k+" "));

System.out.println();

int2_25.forEachRemaining((int k)->System.out.print(k+" "));

}

}

2:使用Spliterator实现并行输出

@Test

public void definied_Sort() {

IntStream stream = new Random().ints(0, 100).limit(100);

int[] array = stream.toArray();

Arrays.sort(array);

final int NUMS=3;// 切分的次数

ExecutorService thread_pool = Executors.newFixedThreadPool(10);

Spliterator.OfInt cut1 = Arrays.spliterator(array);

while(!thread_pool.isTerminated()) {

thread_pool.submit(()->{

OfInt split = cut1.trySplit();

thread_pool.shutdown();

split.forEachRemaining((int k)->System.out.print(k+" "));

System.out.println();

});

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java并发排序_Java基于fork/koin类实现并发排序相关推荐

  1. 实战并发编程 - 04基于不可变模式解决并发问题_2

    文章目录 Pre 业务描述 短信服务商基本信息 短信路由网关 基于不可变模式改造代码 第一步先将SmsInfo改造为不可变对象 接着在需要将获取服务商列表的代码改造为防御性复制 接着提供一个直接替换S ...

  2. java中list元素排序_java list集合元素根据某些字段排序

    一.jdk1.6的环境下 新建ComparatorSort类,并实现Comparator接口,重写compare方法 降序排序:o1的元素>o2的元素,并返回-1:o1的元素小于o2的元素,并返 ...

  3. java抢单功能_基于消息队列的高并发抢单功能实现方法与流程

    本发明涉及嵌入式软件中间件,具体涉及一种基于消息队列的高并发抢单功能实现方法. 背景技术: 中间件是一种独立的系统软件或服务程序,分布式应用系统借助这种软件在不同的技术之间共享资源,管理计算资源和网络 ...

  4. java图片降噪_Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

  5. java 调用弗雷_JAVA API(一)String类和StringBuffer类

    1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号" ...

  6. java 动态更新_java动态更新枚举类

    工作中遇到需要对枚举类的值进行动态更新 手动改不现实也不方便 现记录下来方便以后学习使用 1.在工程utils包中添加动态更新枚举类得工具类(根据自己得项目,放到指定位置调用就可以) 2.一开始陷入了 ...

  7. java对中文排序_java对中文(拼音)进行排序

    拼音排序 拼音有好几种方式,其中最主要的是中华人民共和国的汉语拼音 Chinese Phonetic.对汉字的排序有两种:一种是宽松的,能够按拼音排序最常用的汉字,另一种是严格的,能够按拼音排序绝大部 ...

  8. java comparable排序_JAVA中通过Comparable接口实现简单排序

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

  9. java 一个list根据另一个list进行排序_java – 基于另一个List对List进行排序

    我目前有一个String ID列表(List< String>)和一个自定义类的无序列表(List< CustomClass>).我想根据IDS的有序列表来定制自定义类对象的列 ...

最新文章

  1. case 关键字后面的的值有什么要求吗?
  2. boost::math模块查找正态分布的均值或标准差的示例
  3. Apache网页优化概述
  4. java hashmap遍历顺序_Java中HashMap遍历的两种方式
  5. 单一应用架构 垂直应用架构_如何说应用架构的语言
  6. Android演示Stack(课下作业)
  7. 国产木乃伊走进CTO编辑部
  8. 从0开始的Java复健笔记
  9. Hybird app开发入门之Native和H5页面交互原理
  10. Oracle的卸载步骤(详细图示)
  11. 交换机的工作原理是什么,它有什么功能与作用?
  12. 使用hardhat 开发以太坊智能合约-发布合约
  13. 目标检测(四)——xml快速上手(可完整实现)
  14. module_param传递参数
  15. 福瑞泰克完成数亿元B+轮融资,行泊一体+NOA进入大规模量产周期
  16. 程控增益放大器电路原理图
  17. win10总是很快自动休眠,设置休眠时间也无效?
  18. 欧洲CE认证电磁兼容EMC测试
  19. [原创] 如何带好一个团队
  20. 中职计算机应用专业教师到电商企业实践报告,中职教师到企业实践总结.doc

热门文章

  1. PHP ElasticSearch的使用
  2. AtCoder Beginner Contest 055题解
  3. JSONEasy的用法(JSONDateHandler)
  4. 企业如何正确选择云ERP管理软件
  5. WPF ---- ​xmal 解析器没有办法解析类的TypeConverter
  6. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日)
  7. 你所忽略的Linux系统安全及应用(最全面)
  8. qtp web随机获取下拉框的值
  9. 老公,等儿子长大,我去天堂找你(推荐)
  10. 惠普z840工作站linux,HP Z840 工作站,高清非编工作站