linux用于在固定时间间隔启动,按固定时间间隔在Linux环境中运行java代码

主要分两步:一、在Linux环境中一直运行一个线程。二、如何控制java代码同时执行多个工作线程。

一、可以用Linux中的  nohup 命令,控制该线程就算在终端被关闭或者账户退出之后,继续在后台运行该线程,nohup 命令运行由Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。控制该线程在Linux环境中不会被挂起。

退出该线程的状态是Command参数指定命令的退出状态,即当所运行的java代码内容全部完成,线程全部退出时nohup结束。

二、对java代码中的线程池控制用Quartz框架对java中的Job进行控制。

一个Quartz的使用事例代码如下:

import java.util.Date;

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

import org.quartz.JobBuilder;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SchedulerFactory;

import org.quartz.SimpleScheduleBuilder;

import org.quartz.SimpleTrigger;

import org.quartz.TriggerBuilder;

import org.quartz.impl.StdSchedulerFactory;

import com.hefeng.quartz.quartzjob.QuartzJob;

import com.hefeng.quartz.quartzjob.QuartzJob1;

/**

* 用Trigger调度任务

* @author hefeng

*/

public class TriggerTest {

public static void main(String[] args) throws SchedulerException, ClassNotFoundException {

PropertyConfigurator.configure("E:/project/p2pProject/Bill_Account_Config/system/etc/log4jlog.properties");

Logger log = Logger.getLogger(TriggerTest.class);

SchedulerFactory schedulerFactory = new StdSchedulerFactory();

//Schedule接口 实现调度器

Scheduler scheduler = schedulerFactory.getScheduler();

//Class claz = (Class)Class.forName("com.hefeng.quartz.quartzjob.QuartzJob");

//用jobBuilder类实例化JobDetail接口

JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class).withIdentity("quartzJob","quartzJob").build();

JobDetail jobDetail1 = JobBuilder.newJob(QuartzJob1.class).withIdentity("quartzJob1","quartzJob").build();

//Trigger为触发器

log.info("aaaa");

SimpleTrigger simpleTrigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("simpleTrigger","simpleTrigger")

.startAt(new Date())

.withSchedule(

SimpleScheduleBuilder.simpleSchedule()

.withIntervalInSeconds(1).repeatForever()).build();

SimpleTrigger simpleTrigger1 = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("simpleTrigger1","simpleTrigger")

.startAt(new Date())

.withSchedule(

SimpleScheduleBuilder.simpleSchedule()

.withIntervalInSeconds(1).repeatForever()).build();

scheduler.scheduleJob(jobDetail, simpleTrigger);

scheduler.scheduleJob(jobDetail1, simpleTrigger1);

scheduler.start();

try {

Thread.sleep(10000); //主线程休眠,但是job调度作业继续运行

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

scheduler.shutdown();

}

}Quartz框架主要可分为调度器、作业、触发器等。

1、Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。

2、作业为实现Job接口的类,重写其中的 execute(JobExecutionContext context) 方法,方法体即为作业内容。

3、Trigger作为触发器,对作业进行实例化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值