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

大型网站建设翻译英文给女朋友做的网站源码

大型网站建设翻译英文,给女朋友做的网站源码,网站页面怎么做导航,私人网站建设步骤一、简介什么是线程池#xff1f;池的概念大家也许都有所听闻#xff0c;池就是相当于一个容器#xff0c;里面有许许多多的东西你可以即拿即用。java中有线程池、连接池等等。线程池就是在系统启动或者实例化池时创建一些空闲的线程#xff0c;等待工作调度#xff0c;执…一、简介什么是线程池池的概念大家也许都有所听闻池就是相当于一个容器里面有许许多多的东西你可以即拿即用。java中有线程池、连接池等等。线程池就是在系统启动或者实例化池时创建一些空闲的线程等待工作调度执行完任务后线程并不会立即被销毁而是重新处于空闲状态等待下一次调度。线程池的工作机制在线程池的编程模式中任务提交并不是直接提交给线程而是提交给池。线程池在拿到任务之后就会寻找有没有空闲的线程有则分配给空闲线程执行暂时没有则会进入等待队列继续等待空闲线程。如果超出最大接受的工作数量则会触发线程池的拒绝策略。为什么使用线程池线程的创建与销毁需要消耗大量资源重复的创建与销毁明显不必要。而且池的好处就是响应快需要的时候自取就不会存在等待创建的时间。线程池可以很好地管理系统内部的线程如数量以及调度。二、常用线程池介绍Java类ExecutorService是线程池的父接口并非顶层接口。以下四种常用线程池的类型都可以是ExecutorService。单一线程池 Executors.newSingleThreadExecutor()内部只有唯一一个线程进行工作调度可以保证任务的执行顺序(FIFO,LIFO)package com.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class PoolTest {public static void main(String[] args) {// 创建单一线程池ExecutorService singleThreadExecutor Executors.newSingleThreadExecutor();List list new ArrayList();list.add(first);list.add(second);list.add(third);list.forEach(o - {// 遍历集合提交任务singleThreadExecutor.execute(new Runnable() {Overridepublic void run() {System.out.println(Thread.currentThread().getName() : o);try {// 间隔1sThread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});});}}执行结果pool-1-thread-1 : firstpool-1-thread-1 : secondpool-1-thread-1 : third可缓存线程池 Executors.newCachedThreadPool()如果线程池中有可使用的线程则使用如果没有则在池中新建一个线程可缓存线程池中线程数量最大为Integer.MAX_VALUE。通常用它来运行一些执行时间短且经常用到的任务。package com.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class PoolTest {public static void main(String[] args) {// 创建可缓存线程池ExecutorService cachedThreadPool Executors.newCachedThreadPool();List list new ArrayList();list.add(first);list.add(second);list.add(third);list.forEach(o - {try {// 间隔3sThread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}// 遍历集合提交任务cachedThreadPool.execute(new Runnable() {Overridepublic void run() {System.out.println(Thread.currentThread().getName() : o);try {// 间隔1sThread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});});}}执行结果pool-1-thread-1 : firstpool-1-thread-1 : secondpool-1-thread-1 : third因为间隔时间长下一个任务运行时上一个任务已经完成所以线程可以继续复用如果间隔时间调短那么部分线程将会使用新线程来运行。把每个任务等待时间从3s调低至1s:执行结果pool-1-thread-1 : firstpool-1-thread-2 : secondpool-1-thread-1 : third定长线程池 Executors.newFixedThreadPool(int nThreads)创建一个固定线程数量的线程池参数手动传入package com.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class PoolTest {public static void main(String[] args) {// 创建可缓存线程池ExecutorService fixedThreadPool Executors.newFixedThreadPool(3);List list new ArrayList();list.add(first);list.add(second);list.add(third);list.add(fourth);list.forEach(o - {try {// 间隔1sThread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}// 遍历集合提交任务fixedThreadPool.execute(new Runnable() {Overridepublic void run() {System.out.println(Thread.currentThread().getName() : o);try {// 间隔1sThread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});});}}执行结果pool-1-thread-1 : firstpool-1-thread-2 : secondpool-1-thread-3 : thirdpool-1-thread-1 : fourth定时线程池 Executors.newScheduledThreadPool(int corePoolSize)创建一个定长线程池支持定时及周期性任务执行package com.test;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class PoolTest {public static void main(String[] args) {// 创建定长线程池、支持定时、延迟、周期性执行任务ScheduledExecutorService scheduledThreadPool Executors.newScheduledThreadPool(3);scheduledThreadPool.scheduleAtFixedRate(new Runnable() {Overridepublic void run() {System.out.println(Thread.currentThread().getName() : 1秒后每隔3秒执行一次);}}, 1, 3, TimeUnit.SECONDS);}}执行结果pool-1-thread-1 : 1秒后每隔3秒执行一次pool-1-thread-1 : 1秒后每隔3秒执行一次pool-1-thread-2 : 1秒后每隔3秒执行一次pool-1-thread-2 : 1秒后每隔3秒执行一次pool-1-thread-2 : 1秒后每隔3秒执行一次pool-1-thread-2 : 1秒后每隔3秒执行一次pool-1-thread-2 : 1秒后每隔3秒执行一次三、自定义线程池常用构造函数ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue)参数说明1、corePoolSize 核心线程数大小当线程数2、maximumPoolSize 最大线程数 当线程数 corePoolSize的时候会把runnable放入workQueue中3、keepAliveTime  保持存活时间当线程数大于corePoolSize的空闲线程能保持的最大时间。4、unit 时间单位5、workQueue 保存任务的阻塞队列6、threadFactory 创建线程的工厂7、handler 拒绝策略任务执行顺序1、当线程数小于corePoolSize时创建线程执行任务。2、当线程数大于等于corePoolSize并且workQueue没有满时放入workQueue中3、线程数大于等于corePoolSize并且当workQueue满时新任务新建线程运行线程总数要小于maximumPoolSize4、当线程总数等于maximumPoolSize并且workQueue满了的时候执行handler的rejectedExecution。也就是拒绝策略。ThreadPoolExecutor默认有四个拒绝策略1、new ThreadPoolExecutor.AbortPolicy()   直接抛出异常RejectedExecutionException2、new ThreadPoolExecutor.CallerRunsPolicy()    直接调用run方法并且阻塞执行3、new ThreadPoolExecutor.DiscardPolicy()   直接丢弃后来的任务4、new ThreadPoolExecutor.DiscardOldestPolicy()  丢弃在队列中队首的任务缓冲队列BlockingQueueBlockingQueue是双缓冲队列。BlockingQueue内部使用两条队列允许两个线程同时向队列一个存储一个取出操作。在保证并发安全的同时提高了队列的存取效率。常用的几种BlockingQueueArrayBlockingQueue(int i):规定大小的BlockingQueue其构造必须指定大小。其所含的对象是FIFO顺序排序的。LinkedBlockingQueue()或者(int i):大小不固定的BlockingQueue若其构造时指定大小生成的BlockingQueue有大小限制不指定大小其大小有Integer.MAX_VALUE来决定。其所含的对象是FIFO顺序排序的。PriorityBlockingQueue()或者(int i):类似于LinkedBlockingQueue但是其所含对象的排序不是FIFO而是依据对象的自然顺序或者构造函数的Comparator决定。SynchronizedQueue():特殊的BlockingQueue对其的操作必须是放和取交替完成。package com.test;import java.util.concurrent.LinkedBlockingDeque;import java.util.concurrent.RejectedExecutionHandler;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class PoolTest {public static void main(String[] args) {// 工作队列LinkedBlockingDeque workQueue new LinkedBlockingDeque();// 拒绝策略RejectedExecutionHandler handler new ThreadPoolExecutor.AbortPolicy();ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(2, 10, 20, TimeUnit.MILLISECONDS, workQueue, handler);threadPoolExecutor.execute(new Runnable() {Overridepublic void run() {System.out.println(自定义线程池);}});}}
http://www.yutouwan.com/news/447085/

相关文章:

  • 知名的教育行业网站开发wordpress单页面静态
  • 网站YYQQ建设青岛做网站和小程序的公司
  • 做网站为什么赚钱吉安网页制作公司
  • 公司网站后台打不开旅游网站建设规划书模块划分
  • 未备案的网站 访问 hots小程序可做网站吗
  • 阳江商城网站开发设计美橙互联 网站备案
  • 东莞公司建设网站制作明薇通网站建设
  • 三合一网站模板有二维码怎样做网站
  • 本地的佛山网站建设电子商务网站建设与实践考试
  • c2c网站都有哪些iis7.5搭建网站
  • 建设一个网站需要wordpress中国最好主题
  • 网站开发即时聊天源码做网站及小程序需要会哪些技能
  • 哈尔滨寸金网站建设公司口碑越秀区手机版网站建设
  • 还能用的wap网站有源码如何做网站
  • 用dw做网站导航的步骤wordpress 函数api文件
  • 问答网站建设什么是静态网站
  • 网站虚拟空间过期网络教育平台
  • 珠海网站建设制作设计外贸网站源码哪个好
  • 打开一个网站专业做美食视频的网站
  • 带后台的网站开发运营成本网站建设公司如何收费
  • 企业网站建设费用深圳城市建设服务中心网站
  • 花钱做网站不给部署网站建设设计策划
  • 电商网站建设策划方案网站制作需要多长时间
  • 做网站硬件超可爱做头像的网站
  • 东莞网站建设 餐饮网站建站视频教程
  • 江西网站制作公司网站备案信息核验单
  • 做公司网站视频seo自然排名关键词来源的优缺点
  • 关于集团官方网站内容建设的报告网红店的营销方式
  • 网站点击换图片的效果怎么做菏泽做网站建设找哪家
  • 企业网站建设方案服务作品集网站代码