zoukankan      html  css  js  c++  java
  • ExecutorService启动线程

    1,Java5版本以后,使用ExecutorService启动线程,比之前的版本中的Thread的start()更好

    2,创建ExecutorService

    ExecutorService es = Executors.newCachedThreadPool();
    

    3,ExecutorService执行任务

    任务类型:
    实现Runnable接口的类 (无返回值)
    实现Callable接口的类   (有返回值)
     
    3-1, 执行(Runnable)任务
    (1),无返回值: <T> Future<T> submit(Runnable task)
        es.submit(new Thread(){
    	  public void run(){
    		//实现部分
    	  }
           });
    

    (2),有返回值: <T> Future<T> submit(Runnable task, T result)

        String result = "END";
           Future<String> rs = es.submit(new Thread(){
    			public void run(){
    				//实现部分
    			}
    	}, result);
    		
    	String end = "";
    	try {
    		end = rs.get();    //获取执行结果
    	} catch (InterruptedException e) {  
                e.printStackTrace();  
            } catch (ExecutionException e) {  
                e.printStackTrace();  
            }  
    		
    	System.out.println(end);  // 执行结果: END
    

    3-2,执行(Callable)任务

    (1)有返回值 :  <T> Future<T> submit(Callable<T> task)

        String mobile = "13050230361";
          Map<String, String> map = new HashMap<String, String>();
          Future<String> rs = es.submit(new TaskThread(mobile, map));
    		
          String end = "";
          try {
    	  end = rs.get();   //获取执行结果
        } catch (InterruptedException e) {  
                e.printStackTrace();  
          } catch (ExecutionException e) {  
                e.printStackTrace();  
          } 
    		
          System.out.println(end);   //  执行结果: OK
    

    任务实现类:

         class TaskThread implements Callable<String>{
    	private String mobile;
    	private Map<String, String> map;
    	
    	public TaskThread(String mobile, Map<String, String> map) {
    		super();
    		this.mobile = mobile;
    		this.map = map;
    	}
    
    	@Override
    	public String call() throws Exception {
    		if(mobile == null){
    			return null;
    		}
    		return "OK";
    	}
            }
    

      

    4,用例:发送短信

      

     
     
  • 相关阅读:
    sp_trace_setfilter sqlserver筛选跟踪或跟踪过滤
    sp_trace_setevent sqlserver跟踪事件及列
    通过导入虚拟电脑的方式还原centos
    sqlserver profiler 抓出来作业的代码 SQLAgent
    克隆server2008R2造成SID冲突
    sqlserver ssms ctrl+e快捷键问题
    Caffe源码解析1:Blob
    梯度下降、随机梯度下降和批量梯度下降
    Caffe CNN特征可视化
    Caffe 抽取CNN网络特征 Python
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/6513627.html
Copyright © 2011-2022 走看看