zoukankan      html  css  js  c++  java
  • java中 ExecutorService,Executor,ThreadPoolExecutor的用法

    package com;
    import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.Executor;
    import java.util.concurrent.ExecutorService;  
    import java.util.concurrent.Executors;  
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    public class demo3 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
             //test1();
             //test2();
             test3();
        }
        
        
        static void test1(){
            //ExecutorService的用法
             ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);  
              for( int i=0;i<100;i++){
              fixedThreadPool.execute(
                     new Runnable(){
                         
                         public void run() {    
    System.out.println("====threadId="+Thread.currentThread().getId());
                             
                         }
                     }
                      );
              }
            
        
        }
        
        
        static void test2(){
              Executor exec=new ThreadPerTaskExecutor();
              exec.execute(new Runnable(){
    
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    System.out.println("ccccc"+Thread.currentThread().getId());
                }
                  
                  
              });
              
          }
        
        
        //ThreadPoolExecutor
        static void test3(){
            
            BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
              ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 5, TimeUnit.SECONDS,
                        queue, new ThreadPoolExecutor.AbortPolicy());
              
              for(int i=0;i<100;i++){
              threadPool.execute(new MyThread(i+""));
              }
              threadPool.shutdown();
              
        }
        
        
          static class MyThread implements Runnable {
                private String name;
    
                public MyThread(String name) {
                    this.name = name;
                }
    
                @Override
                public void run() {
                    // 做点事情
                    try {
                        Thread.sleep(1000);
                            
                        System.out.println(name+"===当前线程="+Thread.currentThread().getId() + " finished job!") ;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        
    
    
    }
    
    
    
    //execute的用法
         class ThreadPerTaskExecutor implements Executor {
             public void execute(Runnable r) {
                 new Thread(r).start();
             }
         }
  • 相关阅读:
    各种版本控制器的作用
    mybatis的一些特殊符号标识(大于,小于,等于,不等于)
    struts2的作用是什么
    js中给数组添加元素的方法有哪些
    springmvc中拦截器配置格式
    js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池
    hover()函数的用法
    error和exception的不同与相同
    cookie和session的区别有哪些
    数据库连接池的工作机制是什么
  • 原文地址:https://www.cnblogs.com/tiancai/p/7146227.html
Copyright © 2011-2022 走看看