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

网站开发和桌面开发哪个难制作一个网站流程

网站开发和桌面开发哪个难,制作一个网站流程,动易学校网站,攀枝花建设工程有限责任公司网站spring 线程池线程池对于执行同步和异步过程非常重要。 本文介绍如何使用Spring开发和监视线程池服务。 创建线程池已通过两种替代方法进行了说明。 二手技术 #xff1a; JDK 1.6.0_21 春天3.0.5 Maven的3.0.2 步骤1#xff1a;建立已完成的专案 创建一个Maven项目 JDK 1.6.0_21 春天3.0.5 Maven的3.0.2 步骤1建立已完成的专案 创建一个Maven项目如下所示。 可以使用Maven或IDE插件创建。 步骤2图书馆 Spring依赖项已添加到Maven的pom.xml中。 !-- Spring 3 dependencies -- dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion${spring.version}/version /dependency dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version /dependency 为了创建runnable-jar可以使用以下插件。 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdversion1.3.1/versionexecutionsexecutionphasepackage/phasegoalsgoalshade/goal/goalsconfigurationtransformerstransformerimplementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformermainClasscom.otv.exe.Application/mainClass/transformertransformerimplementationorg.apache.maven.plugins.shade.resource.AppendingTransformerresourceMETA-INF/spring.handlers/resource/transformertransformerimplementationorg.apache.maven.plugins.shade.resource.AppendingTransformerresourceMETA-INF/spring.schemas/resource/transformer/transformers/configuration/execution/executions /plugin 第3步创建任务班 通过实现Runnable接口可以创建一个新的TestTask类。 此类显示要执行的任务。 package com.otv.task;import org.apache.log4j.Logger;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public class TestTask implements Runnable {private static Logger log Logger.getLogger(TestTask.class);String taskName;public TestTask() {}public TestTask(String taskName) {this.taskName taskName;}public void run() {try {log.debug(this.taskName : is started.);Thread.sleep(10000);log.debug(this.taskName : is completed.);} catch (InterruptedException e) {log.error(this.taskName : is not completed!);e.printStackTrace();}}Overridepublic String toString() {return (getTaskName());}public String getTaskName() {return taskName;}public void setTaskName(String taskName) {this.taskName taskName;} } 步骤4建立TestRejectedExecutionHandler类别 通过实现RejectedExecutionHandler接口创建TestRejectedExecutionHandler类。 如果没有空闲线程并且队列溢出则将拒绝任务。 此类处理被拒绝的任务。 package com.otv.handler;import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor;import org.apache.log4j.Logger;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public class TestRejectedExecutionHandler implements RejectedExecutionHandler {private static Logger log Logger.getLogger(TestRejectedExecutionHandler.class);public void rejectedExecution(Runnable runnable, ThreadPoolExecutor executor) {log.debug(runnable.toString() : has been rejected);} } 步骤5创建ITestThreadPoolExecutorService接口 ITestThreadPoolExecutorService接口已创建。 package com.otv.srv;import java.util.concurrent.ThreadPoolExecutor;import com.otv.handler.TestRejectedExecutionHandler;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public interface ITestThreadPoolExecutorService {public ThreadPoolExecutor createNewThreadPool();public int getCorePoolSize();public void setCorePoolSize(int corePoolSize);public int getMaxPoolSize();public void setMaxPoolSize(int maximumPoolSize);public long getKeepAliveTime();public void setKeepAliveTime(long keepAliveTime);public int getQueueCapacity();public void setQueueCapacity(int queueCapacity);public TestRejectedExecutionHandler getTestRejectedExecutionHandler();public void setTestRejectedExecutionHandler(TestRejectedExecutionHandler testRejectedExecutionHandler);} 步骤6建立TestThreadPoolExecutorService类别 通过实现ITestThreadPoolExecutorService接口来创建TestThreadPoolExecutorService类。 此类创建一个新的线程池。 package com.otv.srv;import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit;import com.otv.handler.TestRejectedExecutionHandler;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public class TestThreadPoolExecutorService implements ITestThreadPoolExecutorService {private int corePoolSize;private int maxPoolSize;private long keepAliveTime;private int queueCapacity;TestRejectedExecutionHandler testRejectedExecutionHandler;public ThreadPoolExecutor createNewThreadPool() {ThreadPoolExecutor executor new ThreadPoolExecutor(getCorePoolSize(),getMaxPoolSize(),getKeepAliveTime(),TimeUnit.SECONDS,new ArrayBlockingQueue(getQueueCapacity()),getTestRejectedExecutionHandler());return executor;}public int getCorePoolSize() {return corePoolSize;}public void setCorePoolSize(int corePoolSize) {this.corePoolSize corePoolSize;}public int getMaxPoolSize() {return maxPoolSize;}public void setMaxPoolSize(int maxPoolSize) {this.maxPoolSize maxPoolSize;}public long getKeepAliveTime() {return keepAliveTime;}public void setKeepAliveTime(long keepAliveTime) {this.keepAliveTime keepAliveTime;}public int getQueueCapacity() {return queueCapacity;}public void setQueueCapacity(int queueCapacity) {this.queueCapacity queueCapacity;}public TestRejectedExecutionHandler getTestRejectedExecutionHandler() {return testRejectedExecutionHandler;}public void setTestRejectedExecutionHandler(TestRejectedExecutionHandler testRejectedExecutionHandler) {this.testRejectedExecutionHandler testRejectedExecutionHandler;} } 步骤7创建IThreadPoolMonitorService接口 IThreadPoolMonitorService接口已创建。 package com.otv.monitor.srv;import java.util.concurrent.ThreadPoolExecutor;public interface IThreadPoolMonitorService extends Runnable {public void monitorThreadPool();public ThreadPoolExecutor getExecutor();public void setExecutor(ThreadPoolExecutor executor);} 步骤8创建ThreadPoolMonitorService类 ThreadPoolMonitorService类是通过实现IThreadPoolMonitorService接口创建的。 此类监视创建的线程池。 package com.otv.monitor.srv;import java.util.concurrent.ThreadPoolExecutor; import org.apache.log4j.Logger;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public class ThreadPoolMonitorService implements IThreadPoolMonitorService {private static Logger log Logger.getLogger(ThreadPoolMonitorService.class);ThreadPoolExecutor executor;private long monitoringPeriod; public void run() {try {while (true){monitorThreadPool();Thread.sleep(monitoringPeriod*1000);}} catch (Exception e) {log.error(e.getMessage());}}public void monitorThreadPool() {StringBuffer strBuff new StringBuffer();strBuff.append(CurrentPoolSize : ).append(executor.getPoolSize());strBuff.append( - CorePoolSize : ).append(executor.getCorePoolSize());strBuff.append( - MaximumPoolSize : ).append(executor.getMaximumPoolSize());strBuff.append( - ActiveTaskCount : ).append(executor.getActiveCount());strBuff.append( - CompletedTaskCount : ).append(executor.getCompletedTaskCount());strBuff.append( - TotalTaskCount : ).append(executor.getTaskCount());strBuff.append( - isTerminated : ).append(executor.isTerminated());log.debug(strBuff.toString());}public ThreadPoolExecutor getExecutor() {return executor;}public void setExecutor(ThreadPoolExecutor executor) {this.executor executor;} public long getMonitoringPeriod() {return monitoringPeriod;}public void setMonitoringPeriod(long monitoringPeriod) {this.monitoringPeriod monitoringPeriod;} } 第9步创建入门课程 启动器类已创建。 package com.otv.start;import java.util.concurrent.ThreadPoolExecutor;import org.apache.log4j.Logger;import com.otv.handler.TestRejectedExecutionHandler; import com.otv.monitor.srv.IThreadPoolMonitorService; import com.otv.monitor.srv.ThreadPoolMonitorService; import com.otv.srv.ITestThreadPoolExecutorService; import com.otv.srv.TestThreadPoolExecutorService; import com.otv.task.TestTask;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public class Starter {private static Logger log Logger.getLogger(TestRejectedExecutionHandler.class);IThreadPoolMonitorService threadPoolMonitorService;ITestThreadPoolExecutorService testThreadPoolExecutorService;public void start() {// A new thread pool is created...ThreadPoolExecutor executor testThreadPoolExecutorService.createNewThreadPool();executor.allowCoreThreadTimeOut(true);// Created executor is set to ThreadPoolMonitorService...threadPoolMonitorService.setExecutor(executor);// ThreadPoolMonitorService is started...Thread monitor new Thread(threadPoolMonitorService);monitor.start();// New tasks are executed...for(int i1;i10;i) {executor.execute(new TestTask(Taski));}try {Thread.sleep(40000);} catch (Exception e) {log.error(e.getMessage());}for(int i10;i19;i) {executor.execute(new TestTask(Taski));}// executor is shutdown...executor.shutdown();} public IThreadPoolMonitorService getThreadPoolMonitorService() {return threadPoolMonitorService;}public void setThreadPoolMonitorService(IThreadPoolMonitorService threadPoolMonitorService) {this.threadPoolMonitorService threadPoolMonitorService;}public ITestThreadPoolExecutorService getTestThreadPoolExecutorService() {return testThreadPoolExecutorService;}public void setTestThreadPoolExecutorService(ITestThreadPoolExecutorService testThreadPoolExecutorService) {this.testThreadPoolExecutorService testThreadPoolExecutorService;} } 步骤10创建应用程序类 应用程序类已创建。 此类运行应用程序。 package com.otv.start;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;/*** author onlinetechvision.com* since 17 Oct 2011* version 1.0.0**/ public class Application {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(applicationContext.xml);Starter starter (Starter) context.getBean(Starter);starter.start();}} 步骤11创建applicationContext.xml applicationContext.xml已创建。 beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd!-- Beans Declaration --bean idTestTask classcom.otv.task.TestTask/beanbean idThreadPoolMonitorService classcom.otv.monitor.srv.ThreadPoolMonitorServiceproperty namemonitoringPeriod value5 //beanbean idTestRejectedExecutionHandler classcom.otv.handler.TestRejectedExecutionHandler/beanbean idTestThreadPoolExecutorService classcom.otv.srv.TestThreadPoolExecutorServiceproperty namecorePoolSize value1 /property namemaxPoolSize value3 /property namekeepAliveTime value10 /property namequeueCapacity value3 /property nametestRejectedExecutionHandler refTestRejectedExecutionHandler //beanbean idStarter classcom.otv.start.Starterproperty namethreadPoolMonitorService refThreadPoolMonitorService /property nametestThreadPoolExecutorService refTestThreadPoolExecutorService //bean /beans 步骤12创建线程池的替代方法 Spring提供的ThreadPoolTask​​Executor类也可以用于创建线程池。 bean idthreadPoolTaskExecutor classorg.springframework.scheduling.concurrent.ThreadPoolTaskExecutorproperty namecorePoolSize value1 /property namemaxPoolSize value3 /property namequeueCapacity value3 / /beanbean idtestTaskExecutor classTestTaskExecutorconstructor-arg refthreadPoolTaskExecutor / /bean 步骤13建立专案 生成OTV_Spring_ThreadPool项目后将创建OTV_Spring_ThreadPool-0.0.1-SNAPSHOT.jar 。 步骤14运行项目 运行创建的OTV_Spring_ThreadPool-0.0.1-SNAPSHOT.jar文件后将在下面显示输出日志 18.10.2011 20:08:48 DEBUG (TestRejectedExecutionHandler.java:19) - Task7 : has been rejected 18.10.2011 20:08:48 DEBUG (TestRejectedExecutionHandler.java:19) - Task8 : has been rejected 18.10.2011 20:08:48 DEBUG (TestRejectedExecutionHandler.java:19) - Task9 : has been rejected 18.10.2011 20:08:48 DEBUG (TestTask.java:25) - Task1 : is started. 18.10.2011 20:08:48 DEBUG (TestTask.java:25) - Task6 : is started. 18.10.2011 20:08:48 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 2 - CompletedTaskCount : 0 - TotalTaskCount : 5 - isTerminated : false 18.10.2011 20:08:48 DEBUG (TestTask.java:25) - Task5 : is started. 18.10.2011 20:08:53 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 0 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:08:58 DEBUG (TestTask.java:27) - Task6 : is completed. 18.10.2011 20:08:58 DEBUG (TestTask.java:27) - Task1 : is completed. 18.10.2011 20:08:58 DEBUG (TestTask.java:25) - Task3 : is started. 18.10.2011 20:08:58 DEBUG (TestTask.java:25) - Task2 : is started. 18.10.2011 20:08:58 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 2 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:08:58 DEBUG (TestTask.java:27) - Task5 : is completed. 18.10.2011 20:08:58 DEBUG (TestTask.java:25) - Task4 : is started. 18.10.2011 20:09:03 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 3 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:09:08 DEBUG (TestTask.java:27) - Task2 : is completed. 18.10.2011 20:09:08 DEBUG (TestTask.java:27) - Task3 : is completed. 18.10.2011 20:09:08 DEBUG (TestTask.java:27) - Task4 : is completed. 18.10.2011 20:09:08 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 0 - CompletedTaskCount : 6 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:09:13 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 0 - CompletedTaskCount : 6 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:09:18 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 0 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 0 - CompletedTaskCount : 6 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:09:23 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 0 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 0 - CompletedTaskCount : 6 - TotalTaskCount : 6 - isTerminated : false 18.10.2011 20:09:28 DEBUG (TestTask.java:25) - Task10 : is started. 18.10.2011 20:09:28 DEBUG (TestRejectedExecutionHandler.java:19) - Task16 : has been rejected 18.10.2011 20:09:28 DEBUG (TestRejectedExecutionHandler.java:19) - Task17 : has been rejected 18.10.2011 20:09:28 DEBUG (TestRejectedExecutionHandler.java:19) - Task18 : has been rejected 18.10.2011 20:09:28 DEBUG (TestTask.java:25) - Task14 : is started. 18.10.2011 20:09:28 DEBUG (TestTask.java:25) - Task15 : is started. 18.10.2011 20:09:28 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 6 - TotalTaskCount : 12 - isTerminated : false 18.10.2011 20:09:33 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 6 - TotalTaskCount : 12 - isTerminated : false 18.10.2011 20:09:38 DEBUG (TestTask.java:27) - Task10 : is completed. 18.10.2011 20:09:38 DEBUG (TestTask.java:25) - Task11 : is started. 18.10.2011 20:09:38 DEBUG (TestTask.java:27) - Task14 : is completed. 18.10.2011 20:09:38 DEBUG (TestTask.java:27) - Task15 : is completed. 18.10.2011 20:09:38 DEBUG (TestTask.java:25) - Task12 : is started. 18.10.2011 20:09:38 DEBUG (TestTask.java:25) - Task13 : is started. 18.10.2011 20:09:38 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 9 - TotalTaskCount : 12 - isTerminated : false 18.10.2011 20:09:43 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 3 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 3 - CompletedTaskCount : 9 - TotalTaskCount : 12 - isTerminated : false 18.10.2011 20:09:48 DEBUG (TestTask.java:27) - Task11 : is completed. 18.10.2011 20:09:48 DEBUG (TestTask.java:27) - Task13 : is completed. 18.10.2011 20:09:48 DEBUG (TestTask.java:27) - Task12 : is completed. 18.10.2011 20:09:48 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 0 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 0 - CompletedTaskCount : 12 - TotalTaskCount : 12 - isTerminated : true 18.10.2011 20:09:53 DEBUG (ThreadPoolMonitorService.java:39) - CurrentPoolSize : 0 - CorePoolSize : 1 - MaximumPoolSize : 3 - ActiveTaskCount : 0 - CompletedTaskCount : 12 - TotalTaskCount : 12 - isTerminated : true 步骤15下载 OTV_Spring_ThreadPool 参考 如何使用我们JCG合作伙伴提供的 Spring开发和监视线程池服务   在线技术愿景博客的Eren Avsarogullari。 翻译自: https://www.javacodegeeks.com/2012/02/spring-thread-pool-services.htmlspring 线程池
http://www.zqtcl.cn/news/93706/

相关文章:

  • 建设工程类公司网站易语言可以做api网站对接吗
  • 青岛做网站皆赴青岛博wordpress 数据库 备份
  • 外贸公司网站空间哈尔滨seo优化专注
  • 建筑行业综合查询平台优化推广联盟
  • 北京管庄网站建设公司开平网站制作
  • 如何做销售直播网站最专业网站建设
  • 太原市住房和城乡建设局的网站首页网络推广服务外包公司
  • 湘icp备 网站建设 农业 湖南稿定设计免费版
  • 公司网站推广方法陕西省住房建设厅官网
  • 网站关键词排名突然没了无锡企业网站建设报价
  • 找做网站的人网站改版 301跳转
  • 网站备案一次就可以了吧营销管理培训课程
  • 怎么做网站背景专做民宿预定的网站
  • wordpress安装谷歌分析代码建网站seo
  • 百度外卖网站建设与维护方法建设 银行网网站
  • 小程序开发定制开发上海优化价格
  • 来宾住房和城乡建设局网站做外贸推广要做哪些平台
  • 无锡建设网站制作wordpress 知乎
  • 动漫网站源码免费怎么怎么做网站
  • 和两个黑人同时做网站中工互联网站建设
  • windows10PHP 网站建设app应用分发平台开发
  • 中唯建设工程有限公司网站做网站页面对PS切图
  • 个人网页制作成品欣赏seo网站沙盒期
  • 亚马逊站外推广网站怎么做制作营销网站模板免费下载
  • 加拿大网站后缀设计师互联网
  • 做物流的网站有哪些内容共同建设网站心得
  • 主题资源网站建设什么网站做污水处理药剂的好
  • 河北建设厅网站修改密码在哪58同城宿迁二手房
  • 淘宝联盟的购物网站怎么做免费网站模板素材
  • 淄博市网站云平台长沙seo 优化选智投未来no1