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

电子上网站开发台州seo

电子上网站开发,台州seo,东莞长安网站制作,自己动手做网站什么是线程池,这个池字是什么 线程池,主要利用池化思想,线程池,字符串常量池等 为什么要有一个线程池? 正常线程的创建: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.hkea.cn/news/962116/

相关文章:

  • 单位网站建设目的西安网站建设公司排行榜
  • 福州制作网站软件无人在线观看高清视频单曲直播
  • 建设银行卡网站百度账号登录个人中心
  • 网站显示500错误怎么解决方法seo网站推广排名
  • 广告免费设计在线生成网站排名优化
  • 余姚公司网站建设怎么建网址
  • 网站域名授权怎么做市场营销案例100例
  • kindeditor代码高亮 wordpressseo优化排名经验
  • 家乡介绍网页设计上海网站排名优化
  • 广州黄埔网站制作百度sem是什么意思
  • 网站流量分析网站网络推广营销网
  • 化妆品网站建设计划书网站维护是什么意思
  • 建设局网站公告宣传推广的形式有哪些
  • 网站基本架构设计的主要步骤什么软件可以排名次
  • 代做毕业设计网站多少钱网站推广交换链接
  • 苹果指争议广告lg广告北京seo公司网站
  • flash网站制作公司能打开各种网站的浏览器下载
  • 网站开发是叫系统吗站长工具seo排名查询
  • 站长之家html模板西安网站seo技术厂家
  • 重庆网站建设 渝seo交流论坛
  • 洛阳市网站建设宁波seo网络推广软件系统
  • 做网站用建站模版好还是定制好百度站点
  • 关注济南网站建设深圳市企业网站seo
  • 安溪县住房和城乡建设网站色盲
  • 合肥做英文网站今日头条国际军事新闻
  • 西安有哪些做网站的公司好邵阳疫情最新消息
  • asia域名的网站竞价广告
  • 怎么注册公司支付宝账号seo求职信息
  • 多语言网站怎么做网络推广平台公司
  • 山东公司注册网站怎样写营销策划方案