zoukankan      html  css  js  c++  java
  • java多线程异步执行

    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;  
      
    public class TestMain {  
      
        public static void main(String[] args) {  
      
            //实现一个Callable接口  
            Callable<Netty> c = new Callable<Netty>() {  
                @Override  
                public Netty call() throws Exception {  
                      
                    //这里是你的业务逻辑处理  
                      
                    //让当前线程阻塞5秒看下效果  
                    System.out.println("---sleep开始---");  
                    Thread.sleep(5000);  
                    System.out.println("---sleep结束---");  
                    return new Netty("张三");  
                }  
            };  
      
            System.out.println("---主线程不被阻塞,继续往下走---");  
            
            /*Java通过Executors提供四种线程池,分别为:
            newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
            newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
            newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
            newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。*/
            ExecutorService es = Executors.newCachedThreadPool();  
              
            //记得要用submit,执行Callable对象  
            Future<Netty> fn = es.submit(c);  
              
            //无限循环等待任务处理完毕  如果已经处理完毕 isDone返回true  
            while (!fn.isDone()) {  
                try {  
                    //处理完毕后返回的结果  
                    Netty nt = fn.get();  
                    System.out.println("处理完毕后返回的结果:" + nt.name);  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                } catch (ExecutionException e) {  
                    e.printStackTrace();  
                }  
            }  
            
            if (fn.isDone()) {
                System.out.println("关闭");  
                es.shutdown();
            }
            System.out.println("全部运行结束");  
        }  
      
        static class Netty {  
            private Netty(String name) {  
                this.name = name;  
            }  
      
            private String name;  
        }  
        
    }  
  • 相关阅读:
    网站被刷导致404解决
    vim常用
    curl, wget常用选项
    使用paramiko远程登录并执行命令脚本
    批量监测dns是否可用脚本,不可用时并切换
    shell脚本收集服务器基本信息并入库
    沃通SSL证书及国密SSL证书入驻百度云市场
    电子合同,相比纸质合同有哪些好处?
    DV型域名https证书的优点及申请流程
    Chrome 浏览器显示“网站连接不安全”,是什么原因?
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7300330.html
Copyright © 2011-2022 走看看