首页 > 其他分享 >jdk 1.8 多线程

jdk 1.8 多线程

时间:2022-12-23 11:44:29浏览次数:45  
标签:productAlls thread jdk 1.8 util CompletableFuture import new 多线程

package com.sleep.demo;

import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

public class MyTest {
    private static final ThreadPoolExecutor PRODUCT_EXECUTOR = new ThreadPoolExecutor(
            2, 2, 30, TimeUnit.MINUTES, new SynchronousQueue<>(), new ThreadFactory() {
        private final AtomicInteger count = new AtomicInteger(0);
        @Override
        public Thread newThread(Runnable r) {
            Thread thread = new Thread(r);
            thread.setDaemon(true);
            thread.setPriority(Thread.NORM_PRIORITY);
            thread.setName("CommonProductVoConverter-" + count.incrementAndGet());
            return thread;
        }
    }, new ThreadPoolExecutor.CallerRunsPolicy());
    public static void main(String[] args) {
        List<Long> productAlls = new ArrayList<>();
        productAlls.add(1L);
        productAlls.add(5L);
        productAlls.add(2L);
        productAlls.add(3L);
        productAlls.add(4L);
        Random random = new Random();
        List<CompletableFuture<String>> futures = productAlls.stream()
                .map(each -> CompletableFuture.supplyAsync(() -> {
                    try {
                        long i = random.nextInt(1000);
                        System.out.println("random:"+i);
                        Thread.sleep(i);
                        return each+"";
                    } catch (Exception e) {
                        System.out.println("convert product error"+ e);
//                        Profiler.businessAlarm("CommonProductVOConverter#convert", "convert product error: " + JsonUtils.toJson(each.getProduct()));
                        return null;
                    }
                }, PRODUCT_EXECUTOR))
                .collect(Collectors.toList());

        try {
            CompletableFuture.anyOf(futures.toArray(new CompletableFuture[0]))
                    .get(1, TimeUnit.SECONDS);

//CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).get(1 , TimeUnit.SECONDS); } catch (Exception e) { throw new RuntimeException("thread pool execute timeout", e); } for (CompletableFuture<String> future : futures) { String now = future.getNow(null); System.out.println("result:"+now); } } }

 

标签:productAlls,thread,jdk,1.8,util,CompletableFuture,import,new,多线程
From: https://www.cnblogs.com/niun/p/17000360.html

相关文章

  • Jdk安装
    下载Jdk链接地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html  环境变量配置安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";选......
  • jdk调度任务线程池ScheduledThreadPoolExecutor工作原理解析
    jdk调度任务线程池ScheduledThreadPoolExecutor工作原理解析在日常开发中存在着调度延时任务、定时任务的需求,而jdk中提供了两种基于内存的任务调度工具,即相对早期的java.......
  • Java--jdk8的下载与安装
    java安装开发环境安装JDK下载链接:JDK8下载电脑对应版本注册账号点击下载会跳转页面,有账号登录,无账号注册安装可以自定义安装路径(记住它!!!)配置环境变量右键我的......
  • JDK源码分析实战系列-PriorityBlockingQueue
    前言可以通过分析PriorityBlockingQueue来了解JUC中的线程安全的队列实现的一些套路,这些套路会在JUC中其他数据结构实现上反复出现,从而可以更合理的了解那些实现机制背后......
  • Linux安装jdk1.8 通过 yum 一键安装
    对于开发者来说,安装jdk按理说是非常简单的事,但在linux下安装着实费了我这个一直玩windows的小白不少劲。这里简单把步骤梳理下,希望能帮助像我这样的纯小白人士少踩点坑。......
  • centos7中卸载java1.8,并安装java12
     001、查看系统[root@pc1home]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)  002、查看当前的java版本[root@pc1home]#java-version......
  • Java多线程
    核心概念线程就是独立的执行路径在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程。main()称之为主线程,为系统的入口,用于执行整个程序;在一个进程......
  • 一、【Java】多线程与高并发
    一、启动多线程的三种方式1、继承Thread接口类实现run()方法staticclassMyThredextendsThread{@Overridepublicvoidrun(){system.out.println("Hellow......
  • 多线程原理和常用方法以及Thread和Runnable的区别
    多线程原理随机性打印CPU有了两条执行的路径,CPU就有了选择,一会执行main方法一会执行run方法。也可以说两个线程,一个main线程一个run线程一起请求CPU的执行权(执行......
  • 多线程下载USGS Lidar Explorer Map点云数据
    1.简介美国地质勘探局(UnitedStatesGeologicalSurvey,简称USGS),是美国内政部所属的科学研究机构。负责对自然灾害、地质、矿产资源、地理与环境、野生动植物信息等方......