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

网站关键词分割wordpress为展示的作品投票

网站关键词分割,wordpress为展示的作品投票,中国做网站公司,网站备案主体一、#x1f49b; 线程池的基本介绍 内存池#xff0c;进程池#xff0c;连接池#xff0c;常量池#xff0c;这些池子概念上都是一样的#xff5e;#xff5e; 如果我们需要频繁的创建销毁线程#xff0c;此时创建销毁的成本就不能忽视了#xff0c;因此就可以使用线…一、 线程池的基本介绍 内存池进程池连接池常量池这些池子概念上都是一样的 如果我们需要频繁的创建销毁线程此时创建销毁的成本就不能忽视了因此就可以使用线程池。 提前创建好一波线程后续需要使用线程就直接从池子里面拿一个即可当线程不再使用就放回池子里面。本来是需要创建线程/销毁线程现在是从池子里面获取到现成的线程并且把线程归还到池子里面 那么为啥从池子里面拿就比系统里面创建线程更加高效呢 不用线程池如果是系统这里创建线程需要调用系统API进一步的由操作系统内核完成完成线程的创建过程内核是给所有进程提供服务的这样你想干的事情就需要等一等等多长时间我们是未知的是不可以控制的 使用线程池上述的内核中进行的操作都是提前做好了的现在的取线程过程纯粹的是用户使用代码完成的纯用户态-是可控制的。 二、 工厂模式去生产的功能字面意思用于生产对象一般情况下我们创建对象都是new通过构造方法但是构造方法有时候存在巨大的缺陷构造方法是固定就是类名有的类需要使用多种不同构造方式-方法重载仅要求参数的个数和类型有区别 比如说表示坐标-这种无法构成重载 public class Circle {public Circle(double x,double y){ //笛卡尔坐标};public Circle(double r,double a){ //极坐标}; } 所以上面的代码也不对构不成方法重载使用工厂模式来解决上述问题不使用构造方法来(我刚开始也在想为什么是静态直到我自己去试一下明白了也就是说不用构造方法创建对象假如不是静态方法那么该怎么调用他呢不是静态的可是只能用对象.方法才可以调用)用普通方法来构造对象这样方法就可以任意的了普通方法内部去new对象由于普通方法的目的是创建对象然后调用方法来设置属性所以方法一般都是静态的。类名.方法 三、  //Executors工厂类后面的是工厂方法。这句话是创建一个固定线程数量的线程池 //线程池对象ExecutorService serviceExecutorService service Executors.newFixedThreadPool(4); //创建一个线程数组动态变化的线程池。ExecutorService service2 Executors.newCachedThreadPool(); //包含单个线程比原生创建API更简单一些指ThreadExecutorService service3 Executors.newSingleThreadExecutor(); //类似于定时器效果添加一些任务执行被执行的时候不是只有有一个扫描线程来执行可能是有多个共同执行ExecutorService service4 Executors.newScheduledThreadPool();} 四、❤️ 面试题谈谈java库中的线程池构成方法的参数和含义 这个方法最复杂而且别的参数这个参数都有所以就只解释这个方法就行。 int corePoolSize:核心线程数 int maximunPoolSize:最大线程数 ThreadPoolExcutor:里面的线程个数并 非固定不变的会根据当前任务的情况动态变化自适应 corePoolSize:至少要这些线程哪怕你的线程都没任务也要这些个线程如同公司里面的正式员工 maximumPoolSize:最多不超过这些线程哪怕干冒烟了也不能比这个更多了正式员工实习生 long keepAliveTime, TimeUnit unit:实习生线程空闲时间超过指定阈值(允许实习生摸鱼的最大时间就可以销毁了 BlockingQueueRunnableworkQueue:线程池内部有很多很多任务可以使用阻塞队列管理线程池可以内置阻塞队列也可以手动一个。 RejectedExecutionHandler   handler:线程池考的重点拒绝方式/拒绝策略线程池有一个阻塞队列当队列满了继续加任务如何处理。 1.ThreadPoolExecutors.AbortPolicy:直接抛出异常线程池就不干活了小王喊我打球我在学习我直接崩溃了我哇哇大哭 2.ThreadPoolExecutor.callerRunsPolicy:谁说添加这个任务的线程谁就去执行这个任务 我会直接说我没空自己投去吧 3.ThreadPoolExecutor.DiscardPolicy:把新的任务丢弃不打球了我接着学习 4.ThreadPoolExecutor.DiscardPolicy:丢弃最早的任务执行新的任务放弃学习去打球 有的线程公司会推荐使用这个。 五、  具体实现一个线程池 import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue;class MyThreadPool {private BlockingQueueRunnable queue new LinkedBlockingQueue();//通过这个方法把任务添加到线程池中public void submit(Runnable runnable) throws InterruptedException {queue.put(runnable);}//n表示一个线程池里面有几个字段创建了一个固定数量的线程池public MyThreadPool(int n) throws InterruptedException {for (int i 0; i n; i) {Thread t new Thread(() - {while (true) {Runnable runnable null;try {runnable queue.take(); //从队列中提取这个任务} catch (InterruptedException e) {e.printStackTrace();}runnable.run(); //运行这个任务}});t.start(); //开启这个线程}} } public class Demo4 {public static void main(String[] args) throws InterruptedException {//获取当前引用实例MyThreadPool myThreadPool new MyThreadPool(4);for (int i 0; i 1000; i) { //循环很关键哈这个循环是添加1000次任务但是假如你放到run里面就会变成一个任务至少内容是执行1000遍线程是执行多个任务但是不能一个任务还分担myThreadPool.submit(new Runnable() { //安排任务安排一个任务Override //这个任务进行的工作public void run() {System.out.println(Thread.currentThread().getName() love);}});}} } 面试问题2号创建线程池的时候线程个数怎么数的 网路上查资料很多假设cpu逻辑数是N线程的个数NN12N··· 准确的说都不准确因为不同的项目要做的工作是不同的 cpu密集型线程工作全是运算大部分工作在cpu上完成cpu给他安排核心才能概括假如cpu N个核心线程数量最好也是为N如果多了线程也只能是排队等待没有新的进展 Io密集型线程工作涉及大量等待时间等待的过程不要cpu所以这里线程多也会给cpu造成负担cpu16核整个32个线程不犯毛病不耗cpu甚至cpu占用很低——— 实际上一部分cpu密集一部分Io密集是我们工作中的常态此时一个线程多少在cpu上执行多少等待IO,说不好更好的做法自己去性能测试一下找到性能和开销比较均衡的数值。 六、  多线程进阶开启 常见的锁策略 如果工作中真正要实现一把锁需要理解锁策略 1.乐观锁VS悲观锁 乐观锁预测不太会出现锁冲突的情况 悲观锁预测这个场景非常容易锁冲突 2.重量级锁VS轻量级锁 重量级锁加锁开销比较大花的时间多占有系统资源一个悲观锁很可能是重量级锁 轻量级锁花的时间少占有资源少加锁的开销比较小的很可能是乐观锁 悲观乐观是加锁之前堆冲突概率的预测决定工作的多少重量轻量是加锁后考虑实际的锁开销 3.自旋锁VS刮起等待锁 自旋锁是轻量级的一种典型实现在用户态通过自旋的方式while循环实现类似加锁的操作一直在疯狂的舔这种锁会耗一定的cpu但是是最快速度拿到锁的 挂起等待锁通过内核态借助系统提供的锁机制当出现锁冲突会牵扯到内核对线程的调度是冲突的线程出现挂起阻塞等待重量级锁的一种典型体现发现锁被占用后自己该干啥干啥偶尔听到了消息又去找这个锁耗费cpu少但无法第一时间拿到锁小摆烂 4.读写锁VS互斥锁 读写锁把读操作写操作分开了 假如两个线程 一个读加锁另一个还是读加锁那么两个不会有锁竞争目的就是把这种情况处理这样多线程的效率会更高 一个读一个写两个都是写都会有锁竞争但是两个读没事在开发中读操作会比写操作更加频繁 互斥锁写了就不能读读了就不可以写 5.公平锁VS非公平锁 公平锁是遵循先来后到这个规则的 非公平锁相当于超市促销都来抢位置不遵守顺序 操作系统自带锁pthread-mutex)是非公平锁要实现公平锁就需要一些额外的数据结构来支持比如需要有办法记录每个线程的阻塞等待时间
http://www.zqtcl.cn/news/403961/

相关文章:

  • 建立网站 域名 服务器吗wordpress超链接出错
  • 外贸开发网站建设注册会计师协会
  • 莆田建设网站dw网页设计作品及源码
  • 360免费建站视频淘宝客的网站怎么做
  • 四川自助seo建站短视频推广计划
  • 网站建设案例的公司黄冈网站建设公司
  • 做淘客网站需要营业执照吗制作网站公
  • 手机网站开发的目的鲁班设计远程工作
  • 宿迁网站建设要多少钱高密市住房和城乡建设局网站
  • 咸阳网站建设公司哪家好wordpress访客ip记录
  • 厦门建设银行网站那个网站做效果图电脑配置
  • 人才网站建设医院网站建设的好处
  • 房屋装修网站模板html5做网站
  • 网站建设需要的硬件网站建设知名公司排名
  • 绥化网站建设私自搭建vps犯法吗
  • 建设专业网站哪家比较好小程序源码是什么意思
  • 网站设计一般包括什么给公司做网站数据分析
  • 网站根目录在哪里1024cctvcom戊人影祝
  • wordpress转发微信南宁seo企业优化
  • 红旗渠建设集团网站昭通网络推广
  • 海陵区建设局网站计算机网站建设考试试卷
  • 佛山做网站3lue网站开发招标网
  • 粘贴以下代码到网站首页代码的与标签之间渭南软件开发
  • 企业网站建设必要性上海网站建设报价表
  • 陕西省建设厅申报网站一个主体如何添加网站
  • 做网站业务员提成几个点wordpress 地图导航代码
  • 软件下载网站排行住房和城乡建设部办公厅网站
  • 贵阳网站建设需要多少钱百度资源搜索平台
  • 做安全防护信息的网站wordpress初始密码
  • 广东企业网站seo哪里好微信公众号怎么创建文章