线程池

2017-11-14  本文已影响0人  Frog_

java通过Executors提供四种线程池,分别为:

public class newCachedThreadPool {
    public static void main(String[] args) {
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        for(int i=0; i<10; i++) {
            final int index = i;
            try {
                Thread.sleep(index*1000);
            }catch(Exception e) {
                e.printStackTrace();
            }
            cachedThreadPool.execute(new Runnable() {
                
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    System.out.println(index+ Thread.currentThread().getName());
                }
            }); 
        }
    }
}
public class newFixedThreadPool {
    public static void main(String[] args) {
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(7);
        for(int i=0; i<10; i++) {
            final int index = i;
            fixedThreadPool.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        System.out.println(index +"----" + Thread.currentThread().getId());
                        Thread.sleep(2000);
                    }catch(Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}   
public class newScheduledThreadPool {
    public static void main(String[] args) {
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
        scheduledThreadPool.schedule(new Runnable() {
            
            @Override
            public void run() {
                // TODO Auto-generated method stub
                System.out.println("delay 3 seconds");
            }
        },3,TimeUnit.SECONDS);
    }
}
public class newSingleThreadExecutor {
    public static void main(String[] args) {
        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
        for(int i=0; i<10; i++) {
            final int index = i;
            singleThreadExecutor.execute(new Runnable() {
                
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        System.out.println(index +"---" + Thread.currentThread().getId());
                        Thread.sleep(2000);
                    }catch(Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}

在任何线程池中,现有线程在可能的情况下,都会被自动复用。

上一篇 下一篇

猜你喜欢

热点阅读