南宁优质手机网站建设公司,学校网站作用,公司网站上传不了图片,wordpress 文档主题学习ForkJoin一、普通解决多线程方式1、案例一2、效果图二、ForkJoin一、普通解决多线程方式
1、案例一
大数据量的List问题处理#xff0c;多线程分批处理#xff0c;需要解决的问题#xff1a;
下标越界。线程安全。数据丢失。 private static ThreadPoolExecutor thre…
学习ForkJoin一、普通解决多线程方式1、案例一2、效果图二、ForkJoin一、普通解决多线程方式
1、案例一
大数据量的List问题处理多线程分批处理需要解决的问题
下标越界。线程安全。数据丢失。
private static ThreadPoolExecutor threadPool new ThreadPoolExecutor(5,10 * 3,60 * 60,TimeUnit.SECONDS,new LinkedBlockingQueueRunnable(500));Testvoid test1() {//不安全ListString result1 new ArrayList();//安全效率低VectorString result2 new Vector();//安全效率中ListString result3 new CopyOnWriteArrayList();//安全效率高List result4 Collections.synchronizedList(new ArrayList());//根据参数开启线程CountDownLatch countDownLatch new CountDownLatch(5);for (int i 0; i 5; i) {threadPool.execute(new Thread(new Runnable() {SneakyThrowsOverridepublic void run() {for (int i 0; i 100; i) {result1.add(listi i);result2.add(listi i);result3.add(listi i);result4.add(listi i);}Thread.sleep(3000);//等待线程数减一countDownLatch.countDown();}}));}try {// 主线程等待countDownLatch.await();System.err.println(----------);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(result1.size());System.out.println(result2.size());System.out.println(result3.size());System.out.println(result4.size());}2、效果图 二、ForkJoin
动态规范和分而治之不同的是每个小任务之间互相联系。
工作密取分而治之分割了每个任务之后某个线程提前完成了任务就会去其他线程偷取任务来完成加快执行效率。同时第一个分配的线程是从队列中的头部拿任务当完成任务的线程去其他队列拿任务的时候是从尾部拿任务所以这样就避免了竞争。
注意ForkJoinPool的invoke方法是同步阻塞的excute方法是异步的。
稻谷飘香秋天稻谷成熟了飘着阵阵香味。人是不能太闲的闲久了努力一下就以为自己是拼命。一个人至少拥有一个梦想有一个理由去坚强。人的潜能是一座无法估量的丰富的矿藏只等着我们去挖掘。保持前进丝毫别在乎别人想什么说什么做你自己必须做的为自己。看似是在消磨时间实际是在消磨自己。不努力挣钱买房子打算租一辈子房子吗你现在年轻有人租给你可是你老了谁敢租给你每一奋发尽力的背地必有加倍的犒赏。再多一点努力就多一点成功。人的潜能是一座无法估量的丰富的矿藏只等着我们去挖掘。