zoukankan      html  css  js  c++  java
  • Java-多线程-Thread类-线程池及Callable方式

    1、线程池特性

    package cn.bruce.Thread;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    //JDK1.5新特性,实现线程池程序
    public class ThreadPoolDemo {
        public static void main(String[] args) {
            // 调用工厂类方法,创建线程池对象
            // 返回线程池对象,是返回的接口
            ExecutorService ES = Executors.newFixedThreadPool(2);
            // 调用接口实现类对象es中的方法submit提交一个线程任务
            ES.submit(new Runnable()
            {
                @Override
                public void run() {
                    System.out.println(new Thread().currentThread().getName()+"线程任务提交");//提交后不会停止
                }
            });
            ES.submit(new Runnable()
            {
                @Override
                public void run() {
                    System.out.println(new Thread().currentThread().getName()+"线程任务提交");//提交后不会停止
                }
            });
        }
    }

     2、Callable方式进行线程任务

    package cn.bruce.Thread;
    
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    //线程实现异步计算
    //两个线程,一个实现1到100求和,一个实现1到200求和
    public class CallableDemo {
        public static void main(String[] args) throws InterruptedException, ExecutionException {
            ExecutorService eService = Executors.newFixedThreadPool(2);
            Future<Integer> f1 = eService.submit(new Callabletest(100));
            Future<Integer> f2 = eService.submit(new Callabletest(200));
            System.out.println(f1.get());
            System.out.println(f2.get());
            eService.shutdown();
        }
    }
    
    class Callabletest implements Callable<Integer> {
        private int a;
    
        public Callabletest(int a)
        {
            this.a = a;
        }
    
        public Integer call() {
            int sum = 0;
            for (int i = 0; i <= a; i++)
            {
                sum = sum + i;
            }
            return sum;
        }
    }

  • 相关阅读:
    efibootmgr的使用,删除UEFI主板多余启动项。
    各种压缩解压缩命令。
    tar命令排除某文件目录压缩的方法
    豪迪QQ2013群发器破解版9月7日版
    linux virtualbox 访问 usb
    用PPA安装fcitx和搜狗输入法Linux版
    python按行读取文件,去掉换行符" "
    Git常用命令
    Spring中@Autowired 注解的注入规则
    idea导入mavenJar、mavenWeb项目
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13571667.html
Copyright © 2011-2022 走看看