您当前的位置:网站首页>黑寡妇,徐子珊-科技图鉴|如果你的面试官是机器人

黑寡妇,徐子珊-科技图鉴|如果你的面试官是机器人

2019-05-16 08:16:04 投稿作者:admin 围观人数:211 评论人数:0次

介绍

计时器能够供给运转依据时刻的工作使命的功用,在计时器的办理下,特定的使命可在某一时刻运转一次,也能够按指定的时刻距离重复运转。在很多厂商供给的计时器中运用得比较多的有以下三种:

  • java.util.Timer
  • Sun JDK 供给的一种轻量级的计时器。
  • Commonj Timer
  • IBM 和 BEA大吴哥凶恶漫画大全 联合拟定和推出的黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人一种适用于 J2EE 环境的计时器。
  • WebSphere Application Server Scheduler
  • IBM WebSphere Application Server 供给的一种功用强壮的计时器。

java.util.Timer

java.util.Timer 是 Sun JDK 供给的一种计时器,用于使后台线程按计划履行指定使命,这些使命能够被履行一次,也3u8773能够被定时履行。每个 Timer 目标对应一个后台线程,次序地履行一切计时器使命。假如完结某个计时器使命的时刻太长,那么它会“独占”计时器的使命履行线程,然后或许推迟后续使命的履行。对 Timer 目标最终的引证完结而且一切未处理的使命都已履行完结后,计时器的使命履行线程会正常停止(而且成为废物收回的目标)。以下为一个运用 java.util.Timer 的比如:

import java.util.Timer;
import java.util.TimerTask;
public class TimerT牙槽骨杰出est {
Timer timer;
public TimerTest(int seconds) {
ti达内mer = new Timer();
timer.schedule(new TimerTestTask(), seconds*1000);
}
class TimerTestTask extends TimerTask {
public void run() {
System.out.printl用力撸n("In TimerTestTask, execute run method.");
timer.cancel();
}
}
public static void main(String args[]) {
System.out.println("Prepare to sche费雯・丽dule task.");
new TimerTest(2);
System.out.println("Task scheduled.");
}
}

java.util.Timer 简略易用,比较合适供给轻量级的计时器功用。因为其创立的线程会超出容器的办理规模,因而不能运用于办理的环境中。假如用户需求在 J2EE 环境中供给计时器功用,可考虑运用后边行将介绍的 Commonj Timer 或 WebSphere Application Server Scheduler。

Commonj Timer

Commonj Timer 是 Commonj 标准的一部分,它由 IBM 和 BEA 联合拟定和推出,用以更好的呼应客户和独立软件商的需求,给开发人员在开发可移植的服务端运用程序时供给一些愈加简略和功用愈加强壮的方黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人法。这个标准首要包含以下几个部分:Service Component Architecture,Service Data Objects,Work Manager and Timer 和 Enterprise Metadata Discovery。其间,Work Manager and Time 为在运用服务器中支撑并发使命的履行供给了一些简略 API。这运用户能够方便地在黑执事第三季 Servlet 和 EJB 中履行并发的计划使命,然后进步呑吐量,缩短服务端程序的呼应时刻,很好地处理了在 J2EE 环境中履行用户捷安特自定义的多线程并发与计时器服务的问题。

Commonj Timer API 包含三个接口:TimerManager, Timer 和 TimerListener。运用程序能够经过 TimerManager 来定时调用 TimerListener。每个 TimerManager 的 shcedule 办法回来一个 Timer 目标。用户能够经过 TimerManager 的 JNDI 称号在办理环境的上下文中查找 TimerManager。

用户能够经过以下三步来运用毕志新 Commonj Timer:

  1. 在 web.xml 或许 ejb-jar.xml 中增加 Timer 的描绘:1

timer/MyTimer
commonj.timer.TimerManager
Container
Unshareable

  1. 完成 TimerListener 接口:1
import commonj.timers.Timer;
import commonj.timers.TimerListener;

public class TestTimerListener implements TimerListener {
private String input;

public Tes电视盒子tTimerListener(String input) {
this.input = input;
}

public void timerExpired(Timer timer) {
Date timeValue = new Date();
System.out.println("In timerExp平板ired method, time is "
+ timeValue.toString() + ", input value is " + input);
}
}
  1. 查找 TimerManager,调用 TimerListener,初始化使命并设置时刻:1
InitialContext ctx = new InitialContext();
TlenovoimerManager mgr = (TimerManager)
ctx.lookup("java:comp/env/timer/MyTimer");
TimerListener listener =new TestTimerListener ("test");
// 发动计时器
mgr.schedule(listener, 1000*60);

Commonj Timer 供给了一种在 J2EE 环境中运用计时器的办法,它处理了 java.util.Timer 创立的线程超出容器办理规模的问题。因为它不同于 JMX Timer Service 与 JMX framework 之间的紧耦合,然后供给了愈加友爱和独立的 API。 Commonj Timer API 中的 timer 是瞬时的、非业务性的,而且运转于创立它的 JVM 中,因而关于对耐久性、业务性和可恢复性有要求的集群环境并不合适。

IBM WebSphere Application Server Scheduler

IBM Web黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人Sphere Application Server Scheduler 是一种功用全面的定时器服务,供给了在 WebSphere Application Server 中装备、办理和开发依据时刻的工作使命的功用,能够使 J2EE 操作具有高功用、耐久性以及业务性等特征。Scheduler 具有以下长处:

  • 易于办理
  • Scheduler 的创立、更新、调度、验证以及监控等使命是 WebSphere Application Server 中的办理操控台进行装备的,可在单个服务器、集群、节点或单元中创立 Scheduler。每个装备后的 Scheduler 具有仅有的 JNDI 称号、耐久存储设备和看护程序。
  • 图 1. WebSphere Application Server 办理操控台中的 Scheduler 装备面板


  • 具有耐久性和业务健壮性
  • Scheduler 使命能够经过存入联系数据库的办法被耐久化,因而能够确保长时刻屡次的运转。轮询看护程序运用这个数据库来确认哪些使命要运转以及什么时分运转。
  • 具有灵敏的时刻定制办法
  • Schedu蜀龙路五期最新进展ler 使命依据用户指定的日历在某一时刻开端履行一次或屡次使命,用户可依据需求订制自己的日历。
  • 具有扩展性
  • 当 Scheduler 服务运转于集群环境的时分,能够经过负载均衡办理进步功用和可用性。
  • 图 2. 集群环境中的 Scheduler


运用 WebSphere Application Server Scheduler 服务可经过以下三个过程:

  • 在 WebSphere Application Server 办理操控台装备 Scheduler 服务;
  • 开发调星狱囚武用 Scheduler 服务代码;
  • 布置;

Scheduler 服务可由以下两种办法调用:调用会话 Bean 的使命,发送 Java 音讯的服务。本文中运用调用会话 Bean 的使命说明怎么调用 Scheduler 服务。

  1. 创立一个 EJB 项目用以开发由会话 Bean 完成的使命,在 EJB Module 中创立一个无状况 Session Bean(ScheduledTask),在布置描绘符中增加 com.ibm.websphere.scheduler.TaskHandlerHome 和 com.ibm.websphere.scheduler.TaskHandler 作为长途 Home 接口和长途接口。
  2. 完成 ScheduledTask 的 process 办法。1

public void process(TaskStatus status) {
Date timeValue = new Date();
System.out.println("In process method, time is " + timeValue.toString());
}

  1. 在需求调用 Scheduler 服务的办法中查找 Scheduler,创立 BeanTaskInfo 实例并发动 scheduler。1
// 在J2EE上下文环境中查找scheduler
Scheduler scheduler = (Scheduler)
new InitialContext.looku烧心是怎么回事p("java:comp/env/sched/MyTestScheduler");
Object o = ctx.lookup("ejb/com/test/ScheduledTask");
TaskHandlerHome home =
(TaskHandlerHome)javax.rmi.PortableRemoteObject.narrow(o, TaskHandlerHome.class);

// 设置使命发动时刻
java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+3000);

// 设置BeanTaskInfo
BeanTaskInfo taskInfo = (BeanTaskInfo) scheduler.createTaskInfo(BeanTaskInfo.class);
taskInfo.setName("testTask");
taskInfo.setT平维猎杀askHandler(home);
taskInfo.setS起亚kx5tartTime(startDate);
taskInfo.setRepeatInterval("600seconds");
taskInfo.setNumberOfRepeats(-1); //重复直至使命被撤销
taskInfo.setQOS(BeanTaskInfo.QOS_ATLEASTONCE);

// 发动scheduler和使命
TaskStatus status = scheduler.create(taskInfo);

WebSphere Application Server S黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人cheduler 易于办理,具有耐久性和业务黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人道,可扩展,可运用于集群环境,为 J2EE 运用供给了功用全面的计时器服务,但因为它与 WebSphere Application Se黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人rver 的紧耦合联系,降低了它的灵敏性,造成了必定的限制。

总结

java.util.Timer、CommonJ Timer 和 WebSphere Application Server Scheduler 为用户供给了不同等级的、适用与不同规模的计时器,用户能够依据各自的需求运用不同的计时器,表 1 列出了 java.村庄猎艳util.Timer、Commonj Ti坐飞机注意事项mer 和 WebSphere Application Server Scheduler 之间比较成果,用户在运用计时器时能够用来参照比较。

缺陷创立的线程会超出容器办理规模timer 是瞬时的、非业务性的,而且运转于创立它的 JVM 中,不合适于集群环境与 WebSphere Ap黑寡妇,徐子珊-科技图鉴|假如你的面试官是机器人plication Server 紧耦合适用规模非 J2EE 环境J2EE 一般环境J2EE 一般和集群环境

the end
科技图鉴|如果你的面试官是机器人