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

成都响应式网站建设欧洲paypal网站

成都响应式网站建设,欧洲paypal网站,wordpress密码文件夹,建设行政管理部门网站1.线程的执行机制 线程分为用户线程 和 内核线程 内核线程就是系统级别的线程,与cpu逻辑处理器数量对应的 用户线程就是使用java代码创建的Thread对象 用户线程必须与内核线程关联(映射),才能执行任务 当用户线程多于内核线程时…

1.线程的执行机制

  • 线程分为用户线程 和 内核线程

    • 内核线程就是系统级别的线程,与cpu逻辑处理器数量对应的

    • 用户线程就是使用java代码创建的Thread对象

  • 用户线程必须与内核线程关联(映射),才能执行任务

  • 当用户线程多于内核线程时,内核线程就需要不停的上下文切换,使得多个用户线程都能得以执行

  • 上下文会影响性能,消耗资源。

  • 大量的创建用户线程,消耗用户线程,也会影响性能,消耗资源。

  • 所以我们希望,创建合适数量的线程,不要频繁的创建新线程和销毁线程,希望创建的线程可以反复利用

  • 我们就可以使用池化技术:线程池。

2.线程池的执行机制

  • 线程池是jdk1.5中 JUC提供的一个工具

  • 线程池的作用可以统一的创建,分配,管理,销毁线程。实现线程的复用。

3.线程池的应用

3.1拥有线程池

有两种方式,可以拥有线程池对象

  1. 手动创建线程池对象,需要传递7个参数

    JUC提供了3个可以创建线程池的类,我们最常用的就是ThreadPoolExecutor

  2. 通过JUC提供的工具类,快速获得线程池对象 (别人帮我们创建)

    JUC提供了一个Executors工具类,该工具类提供了5个静态方法,可以快速获得对象

3.2手动创建线程池(7个参数)

有4种重载方法

①需要5个参数      ②需要6个参数   5+a      ③需要6个参数   5+b      ④需要7个参数

1.  int corePoolSize : 核心线程数 , 池内线程数的下限,未达下限,优先创建新线程。达到下限,任务装入队列

2.  int maximumPoolSize : 最大线程数。队列满,创建更多线程,直到达到上限。拒绝任务

3.  long keepAliveTime : 线程空闲存活时间(数字)

4.  TimeUnit unit : 配合keepAliveTime , 指定存活时间(单位)

5.  BlockingQueue<Runnable> workQueue : 任务等待队列(阻塞队列)
                                    ArrayBlockingQueue ,底层数组,适合指定长度
                                    LinkedBlockingQueue,底层链表,适合无限长度
                                    DelayQueue , 适合延迟(定时)任务
                                    PriorityBlockingQueue  自认队列(元素自然有序,大小)
                                    SynchronousQueue 同步队列,只能存一个元素

6.  ThreadFactory threadFactory : 线程工厂,在线程池内部用来创建线程的。可以自定义

7.  RejectedExecutionHandler handler : 拒绝策略,当任务队列满,线程达到上下且都忙碌,新任务被拒绝
                                    juc提供了多种拒绝策略,也可以自定义
                                    AbortPolicy  拒绝任务,并抛出异常
                                    DiscardPolicy 拒绝任务,没有任何提示
                                    DiscardOldestPolicy 拒绝最总加入等待瑞列的任务,
                                                        新任务加入队列
                                    CallerRunsPolicy 拒绝任务,将任务交还给发起任务的线程

ThreadPoolExecutor pool=new ThreadPoolExecutor(5,10,5, TimeUnit.MICROSECONDS,new ArrayBlockingQueue(10));pool.execute(Runnable); //执行Runnable任务
pool.submit(Runnable); //获得Future对象,可以知道线程是否执行完毕,但无法获得返回值
pool.submit(Callable); //获得Future对象,可以知道线程是否执行完毕,也可以获得返回值
future.isDone();//快速获得boolean结果,用来判断任务是否执行完毕
future.get();//获得任务执行的结果,如果还没有执行完毕,当前线程会处于等待状态
pool.getPoolSize();//获得线程数
pool.prestartAllCoreThreads() ;//预先创建核心数量的线程
pool.allowCoreThreadTimeOut(true);//设置核心数量的线程也可以超时被销毁
Queue q = pool.getQueue();//获得任务队列
q.size(); //等待执行的任务数量
q.clear();
q.add();
q.remove();

http://www.yayakq.cn/news/296562/

相关文章:

  • 胶南网站建设公司崇信县门户网站首页
  • 免费网站空间怎么Wordpress主页不要全部显示
  • 常用的搜索引擎的网站网站开发团队名字
  • 商业网站建设与维护相亲网站排名前十名
  • 商贸行业网站建设陕西外贸英文网站建设
  • 网站中文域名到期兰州中川国际机场电话
  • 莱芜做网站的商家有哪些现在建网站多少钱
  • 新泰网站开发网站建设费是业务宣传费吗
  • 江阴响应式网站建设wordpress 无法自动更新
  • 汕头建设局网站网站制作的步骤不包括哪些
  • 建设网站的软件网站无后台添加后台
  • 合肥创业网中山 网站关键词优化
  • 公司网站代做做网站 做app好
  • 三明网站优化北京建站者公司
  • 建站教程的特点湖南微信网站建设
  • 自己免费网站建设wordpress建博客教程
  • 机房建设网站SEO网站链接模型
  • 简述网站开发的几个步骤医院网站建设的规划
  • 营销网站设计方案免费咨询妇科医生
  • 韵达快递小网站怎么做学php搞网站开发
  • 简述网站开发具体流程贵州企业网站建设设计
  • 网站设计服务合同优秀网站设计案例分析ppt
  • 网址访问做搜狗网站优化排
  • 深圳网站建设公司信任湖南岚鸿信 赖html修改成wordpress主题
  • 黄岛因特网站建设公司成立一个做网站的公司
  • 网站建设与维护模拟一网站建设吸引客户的
  • 网站建设常见错误太原网站优化步骤
  • 微信运营推广方式重庆seo软件
  • 网站建设课程ppt模板wordpress副标题显示
  • 外贸网站模板外贸网站建设自适应网站建设都找全网天下