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

使用php做的网站有哪些百度域名注册官网

使用php做的网站有哪些,百度域名注册官网,仿cnzz 网站 源码,做界面网站用什么语言好什么是线程池,这个池字是什么 线程池,主要利用池化思想,线程池,字符串常量池等 为什么要有一个线程池? 正常线程的创建: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.zhongyajixie.com/news/58425.html

相关文章:

  • 宾馆管理系统百度seo搜索排名
  • 网站建设的会计核算seocui cn
  • 做reference的网站怎么搭建一个网站
  • 建设网站多久新站seo外包
  • 陕西省最新疫情情况福建键seo排名
  • WordPress中文企业免费主题百度首页关键词优化
  • 中标公告 网站建设线上推广方案模板
  • 温江网站制作做整站优化
  • 优秀品牌形象设计案例百度搜索引擎优化的方法
  • wordpress发邮件宁波seo关键词优化制作
  • google网站打不开了新的营销模式有哪些
  • 免费注册商标百度优化公司
  • 安达市建设局网站优帮云查询数据云查询
  • 公司网站的好处百度seo查询
  • 免费门户网站软文公司代写
  • 国家市场监督管理总局小微企业名录网seo收费
  • 怎样做电商网站的财务分析网站创建的流程是什么
  • 网上哪里有辅导高考生做难题的网站郑州百度网站优化排名
  • 医院网站怎么建设福州百度推广排名
  • 成都网站建设138外贸营销型网站制作公司
  • 做网站如何宣传友链出售
  • 怎么用代码做网站西地那非能提高硬度吗
  • 做蛋糕视频的网站潍坊网站收录
  • 哪些企业用wordpress建站微信视频号怎么推广引流
  • 洪泽网站建设cps广告联盟网站
  • 做网站连带责任谷歌商店paypal下载官网
  • 如何学习制作网站店铺推广方法
  • delphi7 网站开发武汉今日头条最新消息
  • 做网站要做相应的app吗深圳seo优化公司搜索引擎优化方案
  • 网站搭建有分谷歌关键词是网站seo的核心工作