当前位置: 首页 > news >正文

深喉咙企业网站系统微博营销网站源码

深喉咙企业网站系统,微博营销网站源码,福州seo按天扣费,贵阳设计公司线程池 文章目录 线程池1.什么是线程池2.为什么要用线程池3.怎么使用线程池4.工厂模式5.自己实现一个线程池6.创建系统自带的线程池6.1 拒绝策略6.2 线程池的工作流程 1.什么是线程池 字面意思#xff0c;一次创建多个线程#xff0c;放在一个池子(集合类)#xff0c;用的时…线程池 文章目录 线程池1.什么是线程池2.为什么要用线程池3.怎么使用线程池4.工厂模式5.自己实现一个线程池6.创建系统自带的线程池6.1 拒绝策略6.2 线程池的工作流程 1.什么是线程池 字面意思一次创建多个线程放在一个池子(集合类)用的时候拿一个用完了之后就放回这个池子就可以了。 2.为什么要用线程池 首先使用多线程编程就是为了提高效率势必会创建很多线程创建的过程是JVM通过调用系统API来申请系统的过程虽然说创建线程的开销要比创建进程的开销要小的多但是也架不住特别频繁的创建和销毁而池化技术就可以减少线程的频繁创建与销毁从而提高程序性能JVM调用系统API就意味着从用户态到内核态去执行而一个系统只有一个内核态这个内核需要处理很多的事情所有的进程都是要兼顾到的 因此使用线程池的最主要的目的是为了提高效率尽量减少从用户态到内核态的切换 3.怎么使用线程池 JDK中提供了一组不同的线程池的实例 public class Demo01 {public static void main(String[] args) {// 1. 用来处理大量短时间工作任务的线程池,如果池中没有可用的线程将创建新的线程如果线程空闲60秒将收回并移出缓存ExecutorService cachedThreadPool Executors.newCachedThreadPool();// 2. 创建一个操作无界队列且固定大小线程池ExecutorService fixedThreadPool Executors.newFixedThreadPool(3);// 3. 创建一个操作无界队列且只有一个工作线程的线程池ExecutorService singleThreadExecutor Executors.newSingleThreadExecutor();// 4. 创建一个单线程执行器可以在给定时间后执行或定期执行。ScheduledExecutorService singleThreadScheduledExecutor Executors.newSingleThreadScheduledExecutor();// 5. 创建一个指定大小的线程池可以在给定时间后执行或定期执行。ScheduledExecutorService scheduledThreadPool Executors.newScheduledThreadPool(3);// 6. 创建一个指定大小不传入参数为当前机器CPU核心数的线程池并行地处理任务不保证处理顺序Executors.newWorkStealingPool();} }以上方法都是用来获取线程池对象的通过不同的工厂方法获取不同功能的线程池。 4.工厂模式 工厂模式Factory Pattern是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 为什么要使用工厂模式 这里我们用一个简单的例子来说明原因 public class Factory {public static void main(String[] args) {Student student Student.createByAgeAndName(20, 张三);System.out.println(student);} } class Student{private int id;private int age;private String name;public int getId() {return id;}public void setId(int id) {this.id id;}public int getAge() {return age;}public void setAge(int age) {this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public Student() {}public Student(int id, String name) { this.id id;this.name name;}public Student(int age, String name) {this.age age;this.name name;}}观察上述代码观察一下有什么问题当我们想通过id或者age来创建一个学生类时利用构造方法来创建时出现了Student(int, String) is already defined in... 这里的语法不符合Java语法中重载的语法规则,因此我们使用工厂模式可以解决这类问题。 public class Factory {} class Student{private int id;private int age;private String name;public int getId() {return id;}public void setId(int id) {this.id id;}public int getAge() {return age;}public void setAge(int age) {this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public Student() {}// 通过方法名的区分来分别实现不同的创建对象的方法public static Student createByIdAndName(int id,String name){Student studentnew Student();student.setId(id);student.setName(name);return student;}public static Student createByAgeAndName(int age,String name){Student studentnew Student();student.setAge(age);student.setName(name);return student;}}对于工厂模式可以参考以下教程 工厂模式 5.自己实现一个线程池 实现步骤 管理任务的一个队列可以用阻塞队列去实现使用阻塞队列的好处是当线程去取任务时如果队列为空那么就阻塞等待不会造成过多的CPU资源消耗提供一个往队列中添加任务的方法创建多个线程扫描这个队列如果有任务就拿出来执行 public class MyThreadPool{//定义一个阻塞队列来管理任务BlockingQueueRunnablequeuenew LinkedBlockingQueue();/*** 提供一个往队列中添加任务的方法* param runnable* throws InterruptedException*/public void submit(Runnable runnable) throws InterruptedException {queue.put(runnable);}/*** 提供一个指定了创建线程数的构造方法* param num*/public MyThreadPool(int num){if(num0){throw new RuntimeException(线程数必须大于0);}// 创建线程for (int i 0; i num; i) {Thread thread new Thread(() - {while (true){try {Runnable runnablequeue.take();runnable.run();} catch (InterruptedException e) {e.printStackTrace();}}});//启动线程thread.start();}} }6.创建系统自带的线程池 在开发过程中一般使用ThreadPoolExecutor这个类来创建线程池以下为每个参数的代表意义 代码实现 public class Demo {public static void main(String[] args) {ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(3,//核心线程数10,//最大线程数1,//临时线程的存活时间TimeUnit.SECONDS,//临时线程的存活时间单位new LinkedBlockingQueue(20),//阻塞队列的类型和大小);for (int i 0; i 100; i) {int taskIdi;threadPoolExecutor.submit(()-{System.out.println(执行任务 taskId,当前线程Thread.currentThread().getName());});}} }6.1 拒绝策略 6.2 线程池的工作流程 关于线程池的分享就到这里了看完留下的你们的三连吧你们的支持是我最大的动力!!!
http://www.huolong8.cn/news/278933/

相关文章:

  • 营销网站与企业网站的区别自己开平台怎么弄啊
  • 网页设计班级网站用什么做首页网站建设比较好公司
  • 在Vs中做网站接口官网建设需求
  • 天津网站排名提升如何建设论坛网站
  • 网站建设在哪里的wordpress 判断cli
  • 网站建设和程序开发哪个好充实网站 廉政建设 板块
  • 公司网站建设周期及费用网页设计html代码大全图片
  • 增城营销网站建设小说小程序源码
  • 网页网站的区别是什么wordpress图片批量上传
  • 咖啡豆网站模板做网站怎么做的
  • 昆明响应式网站制作flash手机网站制作
  • 深圳网站建设推荐建筑信息平台查询
  • 网站毕业设计开题报告章丘营销型网站建设
  • 那家网站做照片书好网站空间ip是一个域名
  • 做淘宝导购网站网站运营的概念
  • 珠宝设计网站川海丰尚麻辣烫加盟费多少
  • 温州 网站优化wordpress 采集微博
  • 机械企业网站建设wordpress制作相册
  • 缔客网络上海响应式网站建设wordpress 配置说明
  • 自建网站多少钱网站如何维护
  • 做网站维护承包合同怎样不花钱做网站
  • 服装设计网站怎么做沧州地区阿里巴巴做网站
  • 泉州网站建设哪里好棋牌网站开发
  • 名气特别高的手表网站目前比较火的电商平台有哪些
  • 网站模板平台资源那些网站做的非常好看
  • wordpress建站方法国家住房和城乡建设部中国建造师网站
  • 做外卖那些网站好影视公司招聘信息
  • 中国建设银行网站结构怎么做淘宝客网站和APP
  • 企业网站建设合同方案呈贡网站建设
  • 网站设计师专业seo新手快速入门