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

一个做服装品牌的网站福州专业网站建设公司

一个做服装品牌的网站,福州专业网站建设公司,网站建设企业网站建设,服务网站建设排行什么是线程池#xff0c;这个池字是什么 线程池#xff0c;主要利用池化思想#xff0c;线程池#xff0c;字符串常量池等 为什么要有一个线程池#xff1f; 正常线程的创建#xff1a;1#xff0c;手动创建一个线程 2.给该线程分配任务#xff0c;线程执行任务 3…什么是线程池这个池字是什么 线程池主要利用池化思想线程池字符串常量池等 为什么要有一个线程池 正常线程的创建1手动创建一个线程 2.给该线程分配任务线程执行任务 3.执行完成手动释放线程 有了线程池后默认线程数为3最大线程数为5等待队列为6在正常状态下我们只有三个默认线程去处理任务流程是这样的 1.等待队列按照顺序分出任务给空闲线程直到任务为空或者无空闲线程 2.线程执行完任务后不会销毁而是继续执行任务如果此时没有任务那么线程进入空闲状态不会被销毁 如果任务变多等待队列满呢 此时只有三个线程但是任务队列已经满了证明在这个状态下只有三个线程工作是不够的所以我们开启最大线程数全部开始处理任务如果此时仍然想有任务进入队列拒绝。 在将任务处理完毕后队列处于空闲或者任务很少的状态销毁线程使当前的线程数为默认线程数 优点 提高线程利用率 提高响应速度省去创建线程的时间了 控制并发数控制最大线程数量) 便于统一管理(都位于线程池中) 代码实现 package org.my;import java.util.ArrayList; import java.util.Collections;import java.util.LinkedList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicLong;import java.util.stream.Collectors;/*** 创建了num个线程* 每个线程做woker这个任务* 而woker这个任务是不断取jobs中的一个任务进行执行* 直到jobs为空然后进入等待状态* 如果jobs又重新exe添加了新job* jobs唤醒worker可以开始运行* 线程就可以继续开始工作。*/ public class ThreadPoolLearn313Job extends Runnable implements ThreadPoolJob {//最大线程数量private static final int MAX_WORKER_NUMBERS 10;//默认线程数private static final int DEFAULT_WORKER_NUMBERS 5;//最小线程数private static final int MIN_WORKER_NUMBERS 1;//任务队列private final LinkedListJob jobs new LinkedList();private final ListWorker workers Collections.synchronizedList(new ArrayListWorker());//AtomicLong可理解为加了synchronized的longprivate AtomicLong threadNum new AtomicLong();private int workerNum DEFAULT_WORKER_NUMBERS;public ThreadPoolLearn313() {initializeWorkers(DEFAULT_WORKER_NUMBERS);}private void initializeWorkers(int num) {for (int i 0; i num; i) {Worker worker new Worker();workers.add(worker);Thread thread new Thread(worker,ThreadPool-Worker-threadNum.incrementAndGet());thread.start();}}public ThreadPoolLearn313(int num) {this.workerNum numMAX_WORKER_NUMBERS?MAX_WORKER_NUMBERS:numMIN_WORKER_NUMBERS?MIN_WORKER_NUMBERS:num;initializeWorkers(workerNum);}Overridepublic void execute(Job job) {if (job!null){synchronized (jobs){jobs.addLast(job);jobs.notify();}}}//关闭线程池Overridepublic void shutdown() {for (Worker worker : workers) {worker.shutdown();}}Overridepublic void addWorks(int num) {synchronized (jobs){if(numworkerNumMAX_WORKER_NUMBERS){num MAX_WORKER_NUMBERS-workerNum;}initializeWorkers(num);workerNumnum;}}Overridepublic void removeWorks(int num) {synchronized (jobs){if(numworkerNum){throw new IllegalArgumentException(beyond workNum);}int count0;while (countnum){Worker worker workers.get(count);if(workers.remove(worker)){worker.shutdown();count;}}workerNum-count;}}Overridepublic int getJobSize() {return jobs.size();}class Worker implements Runnable{private volatile boolean running true;Overridepublic void run() {while (running){Job job null;synchronized (jobs){while (jobs.isEmpty()){try {jobs.wait();} catch (InterruptedException e) {Thread.currentThread().interrupt();return;}}job jobs.removeFirst();}if(job!null){job.run();}}}public void shutdown(){running false;}} }
http://www.w-s-a.com/news/473100/

相关文章:

  • 网站空间租用费用网站建设公司怎么宣传
  • 镇江网站建设优化案例分析dw2018网页制作步骤图文
  • 网站开发一个多少钱为什么前端都不用dw
  • 网站降权的原因北京中小企业网站建设公司
  • 个人域名能做网站吗wordpress
  • 手机网站设计只找亿企邦工业设计公司简介
  • 腾讯云主机做网站免费网站怎么做啊
  • 网站建设推广销售话术广州网页定制多少钱
  • 备案号是哪个网站项目管理pmp
  • 做网站需要哪些硬件软件网站视频链接怎么做的
  • 电子商务网站建设试题二wordpress主页显示浏览数
  • 网站快照没了广州企业电话大全
  • 网站项目开发收费标准网站开发app开发主营业务
  • 怎么到国外网站去接模具订单做互联网建设企业网站
  • 深圳品牌网站建设公司排名洪雅网站建设
  • nodejs 做网站wordpress主题绕过激活码
  • 平湖模板网站建设公司网页美工培训
  • 顺德网站建设市场建设工程交易中心网站
  • 深圳企业网站怎么做浪琴手表网站建设图
  • 2018网站外链怎么做济南 网站设计公司
  • 承德百度网站建设郑州网站seo优化公司
  • 四川建站模板网站公司分类信息网站制作
  • 网站开发前后端有wordpress模板安装教程视频教程
  • 有网站想修改里面的内容怎么做怎么做黑彩黑彩网站
  • 什么专业会做网站网站建设续费合同
  • 网站开发的项目开发网站做直播功能需要注册吗
  • 网站开发新手什么软件好网站设计师和ui设计师
  • 太仓苏州网站建设软件开发网站建设
  • 一个虚拟主机做2个网站吗工信部怎么查网站备案
  • 本地网站做淘宝客制作app步骤