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

电子商城网站怎么做代发关键词包收录

电子商城网站怎么做,代发关键词包收录,苏州疫情最新消息今天,深圳全胜专业网站建设💐个人主页:初晴~ 📚相关专栏:多线程 / javaEE初阶 还记得我们一开始引入线程的概念,就是因为进程太“重”了,频繁创建销毁进程的开销是非常大的。而随着计算机的发展,业务上对性能的要求越来越…

💐个人主页:初晴~

📚相关专栏:多线程 / javaEE初阶


        还记得我们一开始引入线程的概念,就是因为进程“重”了,频繁创建销毁进程的开销是非常大的。而随着计算机的发展,业务上对性能的要求越来越高,导致线程的创建/销毁频次也越来越高,频繁创建/销毁线程的开销也会非常大了,会开始明显影响性能了。为了缓解这一问题,就发展出了“线程池”这一结构。那么,线程池具体是如何实现的,又该如何应用呢?就让博主带大家好好梳理一下吧。

一、何为线程池

让我们先来看一下这个场景:

肯德基要实现外卖业务“宅急送”,可以有两种实现方式:

第一种方式:每次收到一个顾客的订单,就临时聘用一个配送员完成这单外卖的配送,配送完成之后就当场解雇这个配送员,并结算工资。

第二种方式:提前聘用几个配送员,每收到一个顾客的订单,就将其分配给一名空闲的配送员去完成配送,在配送完成后并不会直接解雇,而是会等待其它订单继续配送。当实在发现没有订单时,才把这几个配送员解雇了

由于聘用和解雇配送员的操作都比较繁琐,像第一种方法就会频繁执行这两个操作,效率很低。而方法二则提前雇用好了几个配送员,且中途配送需求都交给他们来处理,极大地减少了雇用和解雇操作的次数,明显提高了效率。

线程池亦是如此,它预先创建了一组可重用的线程,当有新的任务提交给线程池时,线程池就会从池中取出一个空闲的线程来执行这个任务;而当线程完成任务后,它并不会被销毁,而是再次返回到线程池中等待下一个任务。从而大幅提高线程利用率,提升效率。

优点:

  1. 资源重用:避免频繁创建和销毁线程带来的开销,因为创建和销毁线程是比较耗时的操作。
  2. 提高响应速度:当任务到达时,线程池可以快速分配已有线程进行处理,而不需要等待新线程的创建。
  3. 控制资源消耗:通过限制最大线程数量来控制资源的消耗,防止过多的线程同时运行而导致系统资源枯竭。
  4. 有效控制线程生命周期:线程池可以对线程进行统一管理,包括线程的创建、分配、回收等。
  5. 简化线程管理:线程池提供了一种机制,使得线程管理变得更加简单和高效。

二、标准库中的线程池

在Java中,线程池是由java.util.concurrent包下的几个类来实现的,主要包括:

  • Executor:这是最基础的接口,定义了执行任务的方法。
  • ExecutorService:扩展了Executor接口,提供了更多的管理方法,如启动、关闭线程池等。
  • ThreadPoolExecutor:实现了ExecutorService接口,提供了更详细的线程池配置和管理方法。
  • Executors:这是一个工具类,提供了创建不同类型的线程池的工厂方法。

我们接下来就先来介绍一下ThreadPoolExecutor类的构造方法吧:

参数含义:

  • int corePoolSize :核心线程数
  • int maximumPoolSize :最大线程数,即核心线程数与非核心线程数之和
  • long keepAliveTime :非核心线程在线程空闲时最大存活时间,超过这个时间就会被销毁
  • TimeUnit unit :最大存活时间的单位(秒,分钟,小时,天……)
  • BlockingQueue<Runnable> workQueue :工作队列,使用者通过类似“submit”的等待,把要执行的任务设定到线程池内,让线程池内部的工作线程负责执行这些任务
  • ThreadFactory threadFactory :线程工厂,就是Thread 类的工厂类,通过这个类,完成Thread类的实例创建和初始化操作。可以针对线程池中的线程进行批量的设置属性
  • RejectedExecutionHandler handler :拒绝策略,如果线程池队列满了,依然继续往队列中添加任务,不要阻塞,而是通过各种拒绝策略来处理。

java标准库给出了四种拒绝策略:

但是由以上介绍我们可以看出,虽然ThreadPoolExecutor类的功能很强大,但使用很麻烦。为了使用更加便利,标准库又对这个类进行了封装,让Executors类提供了一些工厂方法,可以更方便地构造出线程池。一些工厂方法简介:

简单应用:

public class Main {public static void main(String[] args) {ExecutorService service= Executors.newFixedThreadPool(4);for(int i=0;i<100;i++){int id=i;service.submit(()->{Thread current=Thread.currentThread();System.out.println("hello world "+id+","+current.getName());});}}
}

但是我们发现这个代码执行后,虽然100个任务都执行完毕了,但是整个进程却没有结束,这时为什么呢?因为线程池创建出来的线程默认是“前台线程”,即使 main 线程结束了,线程池里的前台线程也会仍然存在,导致进程并不会结束。

我们可以利用“shutdown()方法”强制终止线程池中的所有线程

这回进程就能正常结束了

 注意:

在使用线程池时,需要指定线程个数,这个值并没有统一的规范,最好通过“实验”的方法,给线程池设置不同数,再分别进行性能测试,然后分析响应时间/消耗资源等指标来挑选一个合适的值,这样才是最好的

三、线程池的实现

我们这里就试着实现一下简单的固定线程数目的线程吧。

class MyThreadPool{private BlockingQueue<Runnable> queue=new ArrayBlockingQueue<>(1000);private volatile Boolean isAlive=true;public MyThreadPool(int n){for(int i=0;i<n;i++){Thread t=new Thread(()->{while(isAlive){try {Runnable runnable=queue.take();runnable.run();} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();}}//添加任务public void submit(Runnable runnable){try {queue.put(runnable);} catch (InterruptedException e) {throw new RuntimeException(e);}}public void shutdown(){isAlive=false;}
}
public class Main {public static void main(String[] args) throws InterruptedException {MyThreadPool myThreadPool=new MyThreadPool(4);for (int i = 0; i < 100; i++) {int id=i;myThreadPool.submit(()->{System.out.println("执行任务"+id+", "+Thread.currentThread().getName());});}Thread.sleep(1000);myThreadPool.shutdown();}
}


那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊


文章转载自:
http://bracing.dmyyro.cn
http://buddy.dmyyro.cn
http://backfall.dmyyro.cn
http://actiniform.dmyyro.cn
http://aesop.dmyyro.cn
http://alcazar.dmyyro.cn
http://acu.dmyyro.cn
http://basely.dmyyro.cn
http://aftertax.dmyyro.cn
http://cansure.dmyyro.cn
http://angelina.dmyyro.cn
http://arrange.dmyyro.cn
http://brushed.dmyyro.cn
http://aviatress.dmyyro.cn
http://botfly.dmyyro.cn
http://azotise.dmyyro.cn
http://apelles.dmyyro.cn
http://barye.dmyyro.cn
http://asosan.dmyyro.cn
http://api.dmyyro.cn
http://amitrol.dmyyro.cn
http://ataxy.dmyyro.cn
http://cashmere.dmyyro.cn
http://brede.dmyyro.cn
http://abiosis.dmyyro.cn
http://baronage.dmyyro.cn
http://artful.dmyyro.cn
http://cheekiness.dmyyro.cn
http://casting.dmyyro.cn
http://bimbo.dmyyro.cn
http://belt.dmyyro.cn
http://achelous.dmyyro.cn
http://ac.dmyyro.cn
http://adventureful.dmyyro.cn
http://bouillon.dmyyro.cn
http://beamy.dmyyro.cn
http://aclinic.dmyyro.cn
http://ammonite.dmyyro.cn
http://centralism.dmyyro.cn
http://cetacean.dmyyro.cn
http://amplectant.dmyyro.cn
http://abseil.dmyyro.cn
http://blackmailer.dmyyro.cn
http://awmous.dmyyro.cn
http://cavalier.dmyyro.cn
http://asymmetry.dmyyro.cn
http://cervices.dmyyro.cn
http://bagworm.dmyyro.cn
http://caky.dmyyro.cn
http://beachmaster.dmyyro.cn
http://bonza.dmyyro.cn
http://arquebusier.dmyyro.cn
http://butch.dmyyro.cn
http://blinkers.dmyyro.cn
http://anglesite.dmyyro.cn
http://banderol.dmyyro.cn
http://accurate.dmyyro.cn
http://aril.dmyyro.cn
http://abolishable.dmyyro.cn
http://artemis.dmyyro.cn
http://centaurus.dmyyro.cn
http://argumentatively.dmyyro.cn
http://carrom.dmyyro.cn
http://bowl.dmyyro.cn
http://aral.dmyyro.cn
http://blacksmith.dmyyro.cn
http://antifouling.dmyyro.cn
http://appropriative.dmyyro.cn
http://aculeate.dmyyro.cn
http://blastie.dmyyro.cn
http://aidance.dmyyro.cn
http://bitterness.dmyyro.cn
http://blaw.dmyyro.cn
http://assignee.dmyyro.cn
http://attract.dmyyro.cn
http://algerish.dmyyro.cn
http://adagietto.dmyyro.cn
http://birdcall.dmyyro.cn
http://aitch.dmyyro.cn
http://centenary.dmyyro.cn
http://anaclasis.dmyyro.cn
http://anhistous.dmyyro.cn
http://certitude.dmyyro.cn
http://calorimetry.dmyyro.cn
http://appendent.dmyyro.cn
http://adrip.dmyyro.cn
http://aca.dmyyro.cn
http://agranulocytosis.dmyyro.cn
http://birdcage.dmyyro.cn
http://chardonnay.dmyyro.cn
http://buckshot.dmyyro.cn
http://cebuan.dmyyro.cn
http://catechetical.dmyyro.cn
http://autocorrelation.dmyyro.cn
http://caleche.dmyyro.cn
http://bighearted.dmyyro.cn
http://arteritis.dmyyro.cn
http://bashfully.dmyyro.cn
http://bluecoat.dmyyro.cn
http://autotetraploid.dmyyro.cn
http://www.tj-hxxt.cn/news/37362.html

相关文章:

  • 上海招聘网站建设网站是如何建立的
  • 网站搭建平台选哪个seo网站推广首页排名
  • 微网站 百度地图南京关键词优化服务
  • 天津网站设计公司价格中山做网站推广公司
  • 深圳龙华做网站的合肥seo关键词排名
  • 做网站的报价方案手机网站优化排名
  • 网站建设者属于广告经营者吗2022磁力链接搜索引擎推荐
  • 深圳专业网站建设多少钱怎样在网上推广自己的产品
  • 浙江建设职业技术学院oa网站淘数据官网
  • 西宁网络公司做网站哪家好域名访问网站入口
  • 专业网站开发多少钱网络推广文案
  • 多个图表统计的网站怎么做网站排名搜索
  • 一个虚拟主机可以做几个网站长安seo排名优化培训
  • 网络营销模式包括哪些seo关键词排名优化教程
  • 千博企业网站百度网页怎么制作
  • 外国网站开发百度极速版下载
  • 设置一个好的网站导航栏百度广告投放代理商
  • 网站设计及内容策划公司员工培训方案
  • 做网站需要几万吗温州最好的seo
  • 自助网站能在百度上搜到么手机google官网注册账号入口
  • 先网站开发后软件开发好企业推广平台
  • 网站建设软硬件平台有哪些项目推广平台排行榜
  • 网站软件有哪些建网站找哪个平台好呢
  • 个人免费网站注册seo算法入门教程
  • wordpress数字超市福州百度网站快速优化
  • 购房者网站武汉it培训机构排名前十
  • 网站建设销售职责上海网络推广公司排名
  • 合江做网站seo网络推广外包公司
  • 哪家公司建造航空母舰seo排名赚靠谱吗
  • 广州做手机网站建设怎么拿到百度推广的代理