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

彩票网站怎么做的青岛网络科技公司排名

彩票网站怎么做的,青岛网络科技公司排名,武汉做网站的公司有哪些,如何用wordpress设计成网上商城什么是线程池,这个池字是什么 线程池,主要利用池化思想,线程池,字符串常量池等 为什么要有一个线程池? 正常线程的创建:1,手动创建一个线程 2.给该线程分配任务,线程执行任务 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 ThreadPoolLearn313<Job extends Runnable> implements ThreadPool<Job> {//最大线程数量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 LinkedList<Job> jobs =new LinkedList<>();private final List<Worker> workers = Collections.synchronizedList(new ArrayList<Worker>());//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 = num>MAX_WORKER_NUMBERS?MAX_WORKER_NUMBERS:num<MIN_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(num+workerNum>MAX_WORKER_NUMBERS){num =MAX_WORKER_NUMBERS-workerNum;}initializeWorkers(num);workerNum+=num;}}@Overridepublic void removeWorks(int num) {synchronized (jobs){if(num>=workerNum){throw new IllegalArgumentException("beyond workNum");}int count=0;while (count<num){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.ds6.com.cn/news/76471.html

相关文章:

  • 永川区网站建设咨询seo 网站优化推广排名教程
  • 第三方交易网站怎么做泰安做百度推广的公司
  • 网站流量怎么算的吸引人的软文
  • 网站专题页面用什么做友链对网站seo有帮助吗
  • it之家网站源码连云港百度推广总代理
  • 白酒网站定制开发品牌运营管理有限公司
  • 西宁中小企业网站建设附子seo
  • 济南好的网站建设公司哪家好外贸企业网站推广
  • 好看的网站建设线上广告推广
  • 黄强会见韩国忠清南道知事金泰钦seo算法
  • 建立一平台个网站需要多少钱磁力最好用的搜索引擎
  • 通州做网站网络推广产品公司
  • 辽宁省工程新希望官网搜索引擎seo关键词优化
  • 百事通网做网站网络营销公司全网推广公司
  • 外贸免费p2p网站建设福建seo排名培训
  • wordpress人个网站正规专业短期培训学校
  • 网站正能量晚上免费软件谷歌推广怎么做最有效
  • 广州十大广告传媒公司seo编辑招聘
  • 网站设计前沿网站百度本地惠生活推广
  • 国外flash网站产品推广语
  • wordpress换域名后图片无法显示网店关键词怎么优化
  • 网站开发外包平台手机如何建网站
  • 有了网站源码怎么做网页seo搜索引擎优化报价
  • 公司网站设计制作开发方案关键词林俊杰无损下载
  • 高明网站建设公司百度seo综合查询
  • 小企业网站建设哪些好办互联网营销课程体系
  • 郑州前端培训机构东莞seo项目优化方法
  • 阿里云服务器 放多个网站网络推广方法有哪些
  • 最方便建立网站semir森马
  • 香港最新消息今天站群优化公司