Thread多线程5-线程池

线程池

  • 背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大;

  • 思路:提前创建好多个线程,放入线程池,使用时直接获取,使用完放回线程池,可以变频繁创建销毁,实现复用;

  • 好处:

    • 提高响应速度(减少了创建线程的时间);
    • 降低资源消耗(重复利用线程池中线程,不需要每次都创建);
    • 便于线程管理

    corePoolSize:核心线程池的大小;
    maximumPoolSize:最大线程数;
    keepAliveTime:线程没有任务是,最多保持多长时间后终止;

public class ThreadPool {
    public static void main(String[] args) {
        //1.创建服务,创建线程池
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        executorService.execute(new MyThread());
        executorService.execute(new MyThread());
        executorService.execute(new MyThread());

        executorService.submit(new MyThread());
        executorService.submit(new MyThread());
        //2.关闭连接
        executorService.shutdown();
        //3.复习
        MyThread myThread=new MyThread();
        new Thread(myThread,"xxx").start();
     }
}
class MyThread implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

总结:线程创建三种方法

public class ThreadCreate {
    public static void main(String[] args) {
        new Thread1().start();
        new Thread(new Thread2(),"abc").start();

        FutureTask<Integer> futureTask=new FutureTask(new Thread3());
        new Thread(futureTask,"123").start();
        try {
            Integer i=futureTask.get();
            System.out.println(i);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}
//1.继承Thread类
class Thread1 extends Thread{
    @Override
    public void run() {
        System.out.println("Thread1-继承Thread类");
    }
}
//2.实现Runnable接口
class Thread2 implements Runnable{
    @Override
    public void run() {
        System.out.println("Thread2-实现Runnnable接口");
    }
}
//3.实现Callable接口
class Thread3 implements Callable<Integer>{
    @Override
    public Integer call() throws Exception {
        System.out.println("Thread3-实现Callable接口");
        return 100;
    }
}
posted @ 2022-03-25 17:40  老李学Java  阅读(104)  评论(0)    收藏  举报