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作为触发器,对作业进行实例化。
linux用于在固定时间间隔启动,按固定时间间隔在Linux环境中运行java代码相关推荐
- linux打开python3_号外:RIDE 可以在 linux+python3 的环境中运行啦!
号外:RIDE 可以在 linux+python3 的环境中运行啦! RIDE1.7.4.1 版本,是一个 python 自动化测试中一个跨越式版本更新. RIDE 是什么 **RIDE 是什么?它是 ...
- LINUX中运行java程序的方法
要想在linux中运行java的项目需要先将项目打包成war包或者jar包. 其中打包成war包需要将war包部署到tomcat服务器上才能运行.而打包成jar包可以直接使用java命令执行. 在li ...
- linux 安装simg2img,linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)...
linux下在转换system.img文件类型时,提示 首先进入到了可执行文件所在目录下,并将system.img也放在同一目录下: 查看文件信息,可以看到文件是存在的,并且是可以执行的. 于是执行如 ...
- 制作winpe,linux,maxdos三合一u盘启动盘,制作winPE、Linux、maxdos三合一U盘启动盘
内容: 目的:实现制作windows xp PE.MAXDOS和Linux三系统引导的U盘.原因是这样的.有时分区表坏了,无法进入PE,DOS,这时,这时就可以尝试启动Linux了,一般可以进入.^_ ...
- linux用于暂时锁定用户帐号的命令是,linux用于暂时锁定用户帐号的命令是()
摘要: 表使兆欧查是用前要检好否完,用于暂偏转指针检查情况,置将兆其方且平稳放法是水平欧表,状态完好为(.定用变物突变下列质的根据的诱测诱率检法是发频.户帐号突变型之关系基因间的与表是(.... 表使 ...
- 测试环境启动时候进行清空redis所有缓存操作的java代码
目录 目的: 1.调用代码逻辑如下:java-code 2.redis的事务处理,要小心重构掉!对于原子性原则上不进行破坏! 3.依赖Pom的配置 目的: 测试环境要重构的时候,会把所有的常量redi ...
- 在linux中运行c语言程序,linux环境中运行C语言程序
在linux环境下做运行C语言程序 [root@localhost ~]# cat a.c #include main() {int grade; char chgrade; printf(" ...
- Linux中更新java代码命令,java代码执行linux命令
1.容器需要先执行source命令,有权限限制的需要先打通互信. 2.复杂的shell命令,如重定向,需要传入数组. public void excuteLinuxCmd(String cmd) { ...
- linux安装java路径_Linux环境中查看java的安装路径,设置环境变量
常用参数: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -A 同-a,但不列出"."(表示当前目录)和".."(表示当前目录的父目录). ...
最新文章
- Ext.data.GroupingStore
- Double Free浅析(泄露堆地址的一种方法)
- “赋值”与“初始化”
- mysql导出bacpac_在 Azure 中备份应用
- 如何用TensorFlow实现人工智能?
- 知方可补不足~UPDLOCK更新锁的使用
- 斜杠的意思是或还是和_央视网评丨“斜杠老师”,可别顾了赚钱丢了主业
- 树状数组(搬运自维基百科)
- ubuntu gif 制作工具
- 保护电路:简单的限流保护电路图
- PHP 二元线性拟合函数
- 计算机用户接入最快的,行测真题_2013-2017年固定互联网宽带接入用户数的年增长速度最快的年份是...
- 计算机死机启动方法,电脑开机死机的解决方法
- 苹果手机微信消息备份
- 《Miss Talk》第04期:对话凯叔讲故事 曲艳颂
- 3Dmax建模教程详细步骤3D建模速成入门到高级教程
- Crontab定时执行任务
- Mac配置/关闭代理命令
- 2021年科学突破奖:生命科学、基础物理学和数学奖得主揭晓
- python两张表对比不同_Python对比数据库两张表是否一致