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();
             }
         }
  • 相关阅读:
    Notes about "Exploring Expect"
    Reuse Sonar Checkstyle Violation Report for Custom Data Analysis
    Eclipse带参数调试的方法
    MIT Scheme Development on Ubuntu
    Manage Historical Snapshots in Sonarqube
    U盘自动弹出脚本
    hg的常用配置
    Java程序员的推荐阅读书籍
    使用shared memory 计算矩阵乘法 (其实并没有加速多少)
    CUDA 笔记
  • 原文地址:https://www.cnblogs.com/tiancai/p/7146227.html
Copyright © 2011-2022 走看看