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();
             }
         }
  • 相关阅读:
    策略模式
    Java反射机制
    两个无符号的正大数相加
    MySQL大表优化方案
    造成mysql慢查询的原因
    mysql对于很长的字符列的索引方案
    lyt经典版MySQL基础——函数
    lyt经典版MySQL基础——存储过程
    lyt经典版MySQL基础——变量
    lyt经典版MySQL基础——视图
  • 原文地址:https://www.cnblogs.com/tiancai/p/7146227.html
Copyright © 2011-2022 走看看