线程池
线程池
使用线程池的优势:
提高响应速度(减少了创建新线程的时间)
降低资源消耗(重复利用线程池中线程,不需要每次都创建)
便于线程管理
 corePoolSize: 核心池的大小
 maximumPoolSize: 最大线程数
 keepAliveTime: 线程没有任务时最多保持多长时间后会终止
代码
package com.example.multi_thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestPool {
    public static void main(String[] args) {
        Print print = new Print();
        Print1 print1 = new Print1();
        new Thread(print).start();
        new Thread(print).start();
        new Thread(print).start();
        new Thread(print).start();
        new Thread(print).start();
        System.out.println("=============================================");
        // 线程池
        ExecutorService service = Executors.newFixedThreadPool(10);
        service.execute(print);
        service.submit(print1);
        service.submit(print);
        service.shutdown();
        System.out.println("=============================================");
        // 线程池
        ExecutorService service1 = new ThreadPoolExecutor(5, 10, 1L, TimeUnit.MICROSECONDS, new LinkedBlockingDeque<>());
        service1.submit(print1);
        service1.submit(print);
        service1.shutdown();
    }
}
class Print implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "Runnable");
    }
}
class Print1 implements Callable {
    @Override
    public Object call() throws Exception {
        System.out.println(Thread.currentThread().getName() + "callable");
        return null;
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号