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;
        }
    }

  • 相关阅读:
    浅析C# new 和Override的区别
    用流打开open office ods 文件
    两个自己写的合并GridView 行的方法
    TSQL 日期格式化
    页面刷新后滚动条定位
    解决 TextBox 的 ReadOnly 属性为 true 时,刷新页面后值丢失的方法
    Sql server 查询条件中将通配符作为文字使用
    window.open 弹出页面回写父页面值及触发父页面Button事件
    注册光标丢失的事件
    模态对话框对父页面控件回写值
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13571667.html
Copyright © 2011-2022 走看看