摘要:
1.Java 中的线程 线程允许程序同一时间做很多任务,至少,看起来那些任务是并发执行的。在我的并发编程的帖子里有介绍线程的基本概念;我们知道在任一特定时刻仅有一个线程在执行,但是 CPU 给每个线程一小片时间运行(通过时间片)然后来回在线程间快速的切换。这就是我们所看到的多线程运行的样子。这里的cpu指的是单处理器的情况,因为对于多处理器的话,多线程调度机制将会将各个任务分配到不同处理器上来实现,这样cpu时间片切片的行为就并不频繁,也就大大提升了程序的执行效率了; Java 语言使用 Thread 类内建了对线程的支持。当一个线程被通知运行,该线程上的任务对应的 run() 方法就被执行. 阅读全文
posted @ 2013-10-16 17:30
chasewade
阅读(758)
评论(0)
推荐(0)
摘要:
前序: 我们已经在前面的内容能里看到了,我们用 Scheduler 来管理我们的 Job;创建并关联触发器以使 Job 能被触发执行;以及如可选择 calendar 为给定的时程安排提供更多的灵活性。1.Quartz 调度器的介绍 调度器(Scheduler) 是Quartz 框架的心脏,Scheduler也是 Quartz 的主要 API。对于 Quartz 用户来说,多数时候与框架的交互是发生于 Scheduler 之上的。客服端与 Scheduler 交互是通过 org.quartz.Scheduler接口的。从Quartz内部来说,我们可以从前面看出,它是任务执行的一个平台,如果光.. 阅读全文
posted @ 2013-10-16 17:29
chasewade
阅读(874)
评论(0)
推荐(0)
摘要:
前序: 我们已经大概对Quartz的基本有了一个大概的认识;现在我们将要逐渐对Quartz的各个重要组件进行学习;前面已经对job进行了详细讲解,现在我们来认识下它的一个重要兄弟,没有它,作业将无法得到执行的---触发器Trigger;1.Quartz中的触发器Trigger Job 包含了要执行任务的逻辑,但是 Job 对何时该执行却一无所知。这个事情留给了 Trigger。Quartz Trigger 继承了抽象的 org.quartz.Trigger 类。当前,Quartz 有三个可用的 Trigger:Java代码 ·org.quartz.SimpleTrigger· 阅读全文
posted @ 2013-10-16 17:28
chasewade
阅读(764)
评论(0)
推荐(0)
摘要:
前序: 做为企业里的任务调度框架,出现同一时间点同时运行两个任务,或者两个任务因为开始的执行时间和执行时间的长短,很有可能出现任务并发执行的情况;因为Quartz的实现是采用java编程,那么多线程机制就是解决并发问题的必要手段了; 线程与 Quartz 来说尤为重要,因为 Quartz 就是设计为支持同时运行多个 Job。为达到此效果,Quartz 非常倚重于内建于 Java 语言的线程,借助于自己的类和借口还有所增强。 当 Quartz Schduler 首次由某个工厂方法创建时,工厂配置了 Scheduler 会在它的整个生命周期中用到的几个重要的资源。其中一些重要的资源是与线程相关的. 阅读全文
posted @ 2013-10-16 17:27
chasewade
阅读(521)
评论(0)
推荐(0)
摘要:
前序: 前面我们已经通过编程的方式实现了多个作业任务执行具体操作的演示;但具体到实际的时候,如果我们要在 Job 启动之后改变它的执行时间和频度,则必须去修改源代码重新编译,我们很难去以编程的形式来实现作业任务的注册(注册到任务调度器)和对其的后期维护,为了便于维护我们将采取配置的形式来实现; 1.quartz.properties Quartz最重要的配置文件就是quartz.properties;它决定了quartz的运行情况;其中包括了Quartz 应用运行时行为,以及运行过程中相关属性;下面我们将大致描述下quartz.properties的相关配置项:1)1)Configure M. 阅读全文
posted @ 2013-10-16 17:22
chasewade
阅读(520)
评论(0)
推荐(0)
摘要:
前序: 在第一个例子我看到了自定义的作业类在任务调度器上注册后,则通过任务调度器来实现启动;下面,我们将同一个作业类执行两个任务,并都将他们注册到任务调度器上! 首先一个job类指向两个任务,则任务性质可能一样,但任务信息存在差异;我们需要创建两个不同属性信息的job类实例;这个创建的动作是由Scheduler来完成;前面我们已经说了,它获取job信息并创建实例的前提操作如下:Java代码 JobDetailjobDetail=newJobDetail(jobName,Scheduler.DEFAULT_GROUP,jobClass);jobDetail.getJobDataMap().pu. 阅读全文
posted @ 2013-10-16 17:16
chasewade
阅读(2298)
评论(0)
推荐(0)
摘要:
任务调度开源框架Quartz几乎每个项目中都用到了自动任务处理功能。所以在任务调度的功能很常用,但是一个好的任务调度程序是一个颇具挑战性的工作。最近用到Quartz这个框架,感觉很好,所以进行学习。下面的是转载的一份入门的文档。===============================================================概述各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每 阅读全文
posted @ 2013-10-16 16:22
chasewade
阅读(479)
评论(0)
推荐(0)
摘要:
1. 一个简单的Quartz 工程 本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些。当我们用Quartz 执行一个作业时,总是希望它能为我们执行一些有趣且有意义的任务。因此,接下来我们就要做一些有趣且有用的事情。本章向您演示如何创建这么一个 Quartz 作业,Quartz 应用通知它要做事情的时候,就会去扫描指定的目录寻找 XML 文件。假如在指定目录中找到了一个或多个 XML 文件的话,它将会打印出文件的一些概要信息。且这个作业每格10秒执行一次;(时间间隔可以随意设置,这里只是一个演 阅读全文
posted @ 2013-10-16 16:21
chasewade
阅读(600)
评论(0)
推荐(0)
摘要:
一、Quartz简介 Quartz是一个开放源码项目,专注于任务调度器,提供了极为广泛的特性如持久化任务,集群和分布式任务等。Spring对Quartz的集成与其对JDK Timer的集成在任务、触发器和调度计划的声明式配置方面等都非常相似。 Quartz的核心由两个接口和两个类组成:Job和Scheduler接口,JobDetail和Trigger类。不同于JDK Timer,任务不是从实现一个Job接口的类实例开始运行,实际上Quartz在需要的时候才创建job类实例。可以使用JobDetail类来包装任务状态,并传递一个信息给Job,或在一个Job的多次执行过程之间保存信息。二、Quar 阅读全文
posted @ 2013-10-16 16:16
chasewade
阅读(634)
评论(0)
推荐(2)
摘要:
前序: 我们前面说了,我们的程序是可以分成若干个程序片段的,而每一个程序片段我们都可以用来做为一在多个任务;当然做为独立可运行的任务将更为理想化;在多线程来实现并发的手段时,我们常常将没一个任务用一个独立的线程来进行驱动; 下面是一个简单的线程来驱动我们的一个任务的执行;1.任务的描述/** * 一个简单的任务类 * @author liuwei 继承于Runnable接口,并提供Run方法的实现 * Runnable为描述任务的方式 */public class SimpleTask implements Runnable { /** * 任务执行总数 */ ... 阅读全文
posted @ 2013-10-16 14:47
chasewade
阅读(520)
评论(0)
推荐(0)
摘要:
1.人们的期望 对于单处理器环境下,人们希望自己的程序能够并行的执行,即可以并行的执行程序中的多个部分;而对于多处理器的环境下,则希望可以同时进行执行; 2.并发“具有可论证的确定性,但实际上具有不确定性” 我们可以通过仔细分析和代码审查编写出能够正确工作的并发程序,但在实际情况中,可能出现并发程序在给定,适当条件的时候,运行失败;这种情况可能是我们在测试的工作中没有碰上的,且我们在测试的过程中无法预定的测试场景;且产生故障情况是偶尔发生的,但我们却不能不给予关注,如果不给予关注,则将可能会被它带来巨大影响;3.并发的相关问题 如何让程序更快的运行:如果想要一个程序运行的更快,那么可以将其断. 阅读全文
posted @ 2013-10-16 14:44
chasewade
阅读(374)
评论(0)
推荐(0)
摘要:
1. 前言 现在有越来越多的关键应用和大型应用是基于J2EE 来创建的,像银行系统和帐单系统这些关键应用要求有很高的可用性,而Google 和Yahoo 这样的大型应用就需要很好的可扩展性。在如今这个联系越来越紧密的世界,高可用性和良好的可扩展性的重要性日益突出。例如在1999 年6 月份,eBay 的服务停止了22 个小时,导致大约230 万的拍卖被中断,eBay 的股票也随之下降了9.2 个百分点。 J2EE 集群就是一种能够提供高可用性、可扩展性以及容错性的流行技术。但是由于在J2EE 规范中没有对集群做出规范,各个J2EE 厂商就使用不同的方式来实现集群,这样就给系统架构师和开发人.. 阅读全文
posted @ 2013-10-16 10:28
chasewade
阅读(267)
评论(0)
推荐(0)
摘要:
这么说吧,假如你是一个类:public表示你愿意其他人看见你的物品(字段、属性),或者你愿意帮别人做事(方法);private表示你不愿意其他任何人看见你的私人物品,也不愿意帮任何人做事;protected表示你愿意让你的子孙后代看见你的物品,也愿意帮他们做事。有点牵强了,呵呵。。代码示例下吧:public class Person1{ private object Computer;//我有电脑,但别人不知道,也用不了 private void Cook() { //我会做饭,但别人不知道,我也不帮别人做 }}public class Person2{ protected ... 阅读全文
posted @ 2013-10-16 09:09
chasewade
阅读(3714)
评论(0)
推荐(0)