zoukankan      html  css  js  c++  java
  • java线程池笔记

    线程池的唯一好处:
    线程池给开发者带来的唯一好处是允许多个线程按照组的模式进行程序的处理,这样在某一个业务逻辑复杂的环境下性能就会得到很好的提升

    线程池:将多个线程封装在一起执行

    从JDK1.5之后追加了一个并发访问的程序包:java.util.concurrent,对于此线程池操作的核心类和接口就定义在
    此包当中,这里面有两个核心的接口:
    1、普通的执行线程池定义:java.util.concurrent.ExecutorService
    2、调度线程池(某些操作可以自动定时完成):java.util.concurrent.ScheduleExecutorService
    如果要想进行线程池的创建,一般可以使用java.util.concurrent.Executors类完成
    3、创建无大小限制的线程池:
    4、创建固定大小的线程池
    5、单线程池
    6、创建定时调度池

    二、创建各种线程池
    1、创建无限大小的线程池
    public class TestDemo {
    public static void main(String[] args) throws Exception{
    //现在创建了一个线程池的模型,但是里面现在没有线程
    ExecutorService executorService = Executors.newCachedThreadPool();
    for(int x = 0 ; x < 10 ; x++){
    Thread.sleep(200);
    int index = x;
    executorService.submit(() -> {
    System.out.println(Thread.currentThread.getName() + "、x=" + x);
    });//执行线程的操作
    }
    executorService,shutdown();//关闭线程池
    }
    }
    2、创建单线程池
    public class TestDemo {
    public static void main(String[] args) throws Exception{
    //现在创建了一个线程池的模型,但是里面现在没有线程
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    for(int x = 0 ; x < 10 ; x++){
    int index = x;
    executorService.submit(() -> {
    System.out.println(Thread.currentThread.getName() + "、x=" + x);
    });//执行线程的操作
    }
    executorService,shutdown();//关闭线程池
    }
    }
    3、创建固定大小的线程池
    public class TestDemo {
    public static void main(String[] args) throws Exception{
    //现在创建了一个线程池的模型,但是里面现在没有线程
    ExecutorService executorService = Executors.newFixedThreadPool(3);
    for(int x = 0 ; x < 10 ; x++){
    int index = x;
    executorService.submit(() -> {
    System.out.println(Thread.currentThread.getName() + "、x=" + x);
    });//执行线程的操作
    }
    executorService,shutdown();//关闭线程池
    }
    }
    4、定时调度池
    public class TestDemo {
    public static void main(String[] args) throws Exception{
    //创建一个具备有三个线程池大小的定时调度池
    ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3);
    for(int x = 0 ; x < 10 ; x++){
    Thread.sleep(3000);
    int index = x;
    executorService.scheduleAtFixedRate(new Runnable(){
    @Override
    Public void run(){
    System.out.println(Thread.currentThread.getName() + "、x=" + index);
    }
    },3,2,TimeUnit.SECONDS);//使用的是一个秒的单位,表示3秒后开始执行,而后每2秒执行一次
    }
    executorService,shutdown();//关闭线程池
    }
    }

  • 相关阅读:
    为Fiddler增加Burp-like Inspector扩展 实现类似Burpsuite爆破、一键重放、编码转换等功能
    SVN常见问题总结一
    手把手教你学SVN
    js基本语法汇总
    最全的常用正则表达式大全
    CSS padding margin border属性详解
    从零开始学习jQuery (五) 事件与事件对象
    js正则表达式语法
    浏览器内部工作原理
    原生AJAX入门讲解(含实例)
  • 原文地址:https://www.cnblogs.com/jiehanshi/p/10779619.html
Copyright © 2011-2022 走看看