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

做旅游的网站的要素营销型企业网站怎么制作

做旅游的网站的要素,营销型企业网站怎么制作,一般开发一个app要多少钱,搞网站建设赚钱不池化思想#xff1a;线程池、字符串常量池、数据库连接池 提高资源的利用率 下面是手动创建线程和执行任务过程#xff0c;可见挺麻烦的#xff0c;而且线程利用率不高。 手动创建线程对象执行任务执行完毕#xff0c;释放线程对象 线程池的优点#xff1a; 提高线程的…池化思想线程池、字符串常量池、数据库连接池 提高资源的利用率 下面是手动创建线程和执行任务过程可见挺麻烦的而且线程利用率不高。 手动创建线程对象执行任务执行完毕释放线程对象 线程池的优点 提高线程的利用率提高程序的响应速度便于统一管理线程对象可以控制最大并发数 package chapter09;import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.concurrent.*;public class Java05_Thread_Pool {public static void main(String[] args) {// TODO 线程 - 线程池// 所谓线程池其实就是线程对象的容器// 可以根据需要在启动时创建一个或多个线程对象// 快速创建线程池的4种比较常见的方法// 它们都是对 ThreadPoolExecutor 的封装那必然无法满足更复杂更需要自定义功能的需求场景// 1. 创建固定数量的线程对象// ExecutorService是线程服务对象ExecutorService executorService Executors.newFixedThreadPool(3);// 2. 根据需求动态创建线程, 创建的线程可以重复使用只是当目前线程不够了他会动态增加线程executorService Executors.newCachedThreadPool();// 3. 单一线程executorService Executors.newSingleThreadExecutor();// 4. 定时调度线程, 线程有3个但是线程在什么时候执行我们可以去定义他executorService Executors.newScheduledThreadPool(3);// 使用submit提交任务for (int i 0; i 5; i) {executorService.submit(new Runnable() {Overridepublic void run() {System.out.println(submit方式 Thread.currentThread().getName());}});}// 使用execute提交任务for (int i 0; i 5; i) {executorService.execute(new Runnable() {Overridepublic void run() {System.out.println(execute方式 Thread.currentThread().getName());}});}executorService.shutdown(); // 关闭线程池// 如果你需要更多的控制和自定义选项使用 ThreadPoolExecutor 可以满足更复杂的需求// 使用银行柜台服务的场景来解释 ThreadPoolExecutor 的每个参数ExecutorService executorService1 new ThreadPoolExecutor(3, // corePoolSize-核心线程数即银行的初始柜台数// 具体来说银行一开始有 3 个柜台每个柜台有一个员工线程在处理客户任务。这些柜台是常驻的即使没有客户时也不会关闭5, // maximumPoolSize-最大线程数即银行在高峰期能开设的最大柜台数量// 在客户数量增加的时候银行可以最多开设 5 个柜台来处理客户。超过这个数量的客户需要排队等候1L, // keepAliveTime-非核心线程的存活时间// 如果一个临时增加的柜台超过核心柜台数的部分空闲了 1 秒钟那么这个柜台就会关闭线程会被回收。// 这就像银行在高峰期增加了柜台但在高峰期过后临时柜台会在短时间内关闭以节省资源TimeUnit.SECONDS, // keepAliveTimes unit-存活时间的单位// 这里的单位是秒表示非核心线程在空闲 1 秒后会被关闭跟上面的 keepAliveTime 配合使用new ArrayBlockingQueue(3), // workQueue-等待队列用于存放等待处理的任务// 假如银行有一个容量为 3 的等候区队列当所有柜台都在忙碌时新的客户会在这个等候区等待。// 如果等候区也满了那么将会触发下面handler的策略下面是 拒绝策略Executors.defaultThreadFactory(), // threadFactory-线程工厂用于创建新线程// 这是一个工厂模式负责为银行创建新的柜台线程。// Executors.defaultThreadFactory() 是默认的实现它会创建一个新的线程来处理任务。new ThreadPoolExecutor.AbortPolicy() // handler-当线程池和等待队列都满了时如何处理新任务的策略// 如果所有的柜台线程和等候区队列都满了再来新的客户时会执行拒绝策略。// AbortPolicy 会抛出 RejectedExecutionException就像银行告诉新来的客户“我们现在无法处理您的请求请稍后再试”。);/*ExecutorService类对象可以使用两种方法向线程池提交任务submit 和 execute。execute 方法用于提交不需要返回结果的任务。它是 Executor 接口中的方法返回类型: void。execute 方法不返回任何结果。异常处理: 如果任务在执行过程中抛出未经检查的异常该异常将直接传播到调用者所在的线程。适用场景: 适用于不需要返回结果的任务比如简单的异步执行任务。submit 方法用于提交有返回结果的任务。它是 ExecutorService 接口中的方法。返回类型: FutureV。submit 方法返回一个 Future 对象可以通过该对象获取任务的执行结果或取消任务。异常处理: 如果任务在执行过程中抛出未经检查的异常该异常将被捕获并存储在返回的 Future 对象中。调用 Future.get() 方法时会抛出 ExecutionException。适用场景: 适用于需要返回结果的任务比如计算任务或者你需要检查任务是否成功完成。通过这两种方法你可以根据任务的具体需求来选择合适的提交方式。如果任务需要返回结果或需要检查执行状态使用 submit如果任务只是执行不需要返回结果使用 execute。*/ListFutureInteger futureList new ArrayList();// 使用submit提交任务并且改变需要执行的Runnable任务来看看线程池有什么变化情况// 任务数i在6个以内executorService1指向的线程池只开3个线程// 7个任务开四个线程, 8个任务开五个线程// 9个任务直接 Exception in thread main java.util.concurrent.RejectedExecutionException// 解释:// 3个任务直接全部给到三个核心线程处理// 4~6个任务三个核心线程处理其中3个任务剩下的任务进入等待队列// 7个任务三个核心线程处理其中3个任务等待队列存放3个任务那还剩下1个任务就交给非核心线程处理增设了一个额外的线程// 8个任务三个核心线程处理其中3个任务等待队列存放3个任务那还剩下2个任务就交给两个非核心线程处理增设了两个额外的线程// 9个任务三个核心线程处理其中3个任务等待队列存放3个任务那还剩下3个任务但是最大线程数是5个// 也就是说再多只能在三个核心线程的基础上再增设两个额外的线程但是也不够处理剩下的3个任务// 或者说 最大线程数大小 5 等待队列大小 3 8 任务所需的线程数 9for (int i 1; i 3; i) {int taskId i;FutureInteger future executorService1.submit(new Callable() {Overridepublic Integer call() {System.out.println(Thread.currentThread().getName() 正在处理业务 taskId);return taskId;}});futureList.add(future);}IteratorFutureInteger it futureList.iterator();while (it.hasNext()) {FutureInteger future it.next();try {Integer result future.get();System.out.println(Result: result);} catch (InterruptedException e) {throw new RuntimeException(e);} catch (ExecutionException e) {throw new RuntimeException(e);}}// 使用execute方式提交任务for (int i 1; i 9; i) {int taskId i;executorService1.execute(new Runnable() {Overridepublic void run() {System.out.println(Thread.currentThread().getName() 正在处理业务 taskId);}});}} }
http://www.hkea.cn/news/14587437/

相关文章:

  • 朝阳区建设工作办公室网站2345网址导航手机
  • 宣威市住房和城乡建设局网站下载中心浏览网站 需要我安装wordpress
  • 静态网站 模板河南省住房城乡建设厅网站首页
  • 做网站如何自己寻找客户北京建设注册中心网站
  • 更新网站的图片加不上水印申请域名之后如何做网站
  • 餐馆网站怎么做的软件开发步骤包括哪些过程
  • 铭坐网站建设电子商务应用平台包括哪些
  • 云南集优科技网站网络工程师岗位职责
  • 如何在图片上做网站水印图做网站赚钱有哪些途径
  • 去越南做网站大气的个人网站
  • 该产品在英文站及多语言网站wordpress二次元简约主题
  • 云服务器上放多个网站优化设计六年级下册语文答案
  • 做英文企业网站多钱钱商洛网络推广公司
  • 厦门网站制作系统江苏省示范校建设专题网站
  • 珠海建设改革有哪些网站怎样申请自己的网址
  • 电脑商城网站源码百度搜索官方网站
  • dede学校网站免费源码做钓鱼网站视频教程
  • 福州网站建设制作品牌企业云主机可以放多少网站
  • 建设商城购物网站福州谷歌推广
  • 商城网站主机用旧电脑做网站
  • 毕设帮做网站个人网站名称创意大全
  • 科凡网站建设专业app开发外包公司
  • 网站安全认证多少钱做网站时的尺寸
  • 手机怎么搭建属于自己的网站怎么做网站的后台管理系统
  • htm网站开发 实训wordpress模板程序
  • 天津工程建设协会网站关于旅行的网站怎样做
  • 域名注册查询网站php心水主论坛网站制作网页设计
  • 网站建设案例典型企业案例品牌型网站开发
  • 外贸如何推广公司网站河南网站建设怎么收费
  • 网站开发课程学习广西网站怎么制作