Java提供的四种线程池的创建并创建线程

一、创建一个可缓存的线程池,如果线程池长度超出处理需要,

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 创建一个可缓存的线程池,如果线程池长度超出处理需要,
 * 可灵活回收空闲线程,若无可回收线程,则新建线程。*/
public class NewCachedThreadPool {
    
    
    public static void main(String[] args) {
    
    
        //ExecutorService是线程池的一个接口类,Executors提供四种线程池。
        ExecutorService executorService = Executors.newCachedThreadPool();
        for (int i=0;i<10;i++){
    
    
            executorService.submit(new Runnable() {
    
    
                @Override
                public void run() {
    
    
                    System.out.println(Thread.currentThread().getName()+"正在执行任务");
                }
            });
        }
    }
}

二、创建一个定长的线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 创建一个定长的线程池,包含有四个线程
 *定长线程池可以控制线程的最大并发数,超出的线程会在队列中等待。*/
public class NewFixedThreadPool {
    
    
    public static void main(String[] args) {
    
    
        ExecutorService executorService = Executors.newFixedThreadPool(4);
        for (int i = 0;i<10;i++){
    
    
            executorService.submit(new Runnable() {
    
    
                @Override
                public void run() {
    
    
                    System.out.println(Thread.currentThread().getName()+"正在执行任务");
                }
            });
        }
    }
}

三、创建使用单个线程的线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 创建使用单个线程的线程池*/
public class NewSingleThreadExecutor {
    
    
    public static void main(String[] args) {
    
    
        ExecutorService es1 = Executors.newSingleThreadExecutor();
        for (int i = 0; i < 10; i++) {
    
    
            es1.submit(new Runnable() {
    
    
                @Override
                public void run() {
    
    
                    System.out.println(Thread.currentThread().getName() + "正在执行任务");
                 }
            });
        }}
}

四、创建一个周期性线程池

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * 创建一个周期性线程池,支持定时及周期性任务执行。*/
public class NewScheduledThreadPool {
    
    
    public static void main(String[] args) {
    
    
        ScheduledExecutorService es4 = Executors.newScheduledThreadPool(2);
        System.out.println("时间:" + System.currentTimeMillis());
        for (int i = 0; i < 5; i++) {
    
    
            es4.schedule(new Runnable() {
    
    
                @Override
                public void run() {
    
    
                    System.out.println("时间:"+System.currentTimeMillis()+"--"+Thread.currentThread().getName() + "正在执行任务");
                }
            },3, TimeUnit.SECONDS);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Zheng_lan/article/details/109136399