主要分两步:一、在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代码相关推荐

  1. linux打开python3_号外:RIDE 可以在 linux+python3 的环境中运行啦!

    号外:RIDE 可以在 linux+python3 的环境中运行啦! RIDE1.7.4.1 版本,是一个 python 自动化测试中一个跨越式版本更新. RIDE 是什么 **RIDE 是什么?它是 ...

  2. LINUX中运行java程序的方法

    要想在linux中运行java的项目需要先将项目打包成war包或者jar包. 其中打包成war包需要将war包部署到tomcat服务器上才能运行.而打包成jar包可以直接使用java命令执行. 在li ...

  3. linux 安装simg2img,linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)...

    linux下在转换system.img文件类型时,提示 首先进入到了可执行文件所在目录下,并将system.img也放在同一目录下: 查看文件信息,可以看到文件是存在的,并且是可以执行的. 于是执行如 ...

  4. 制作winpe,linux,maxdos三合一u盘启动盘,制作winPE、Linux、maxdos三合一U盘启动盘

    内容: 目的:实现制作windows xp PE.MAXDOS和Linux三系统引导的U盘.原因是这样的.有时分区表坏了,无法进入PE,DOS,这时,这时就可以尝试启动Linux了,一般可以进入.^_ ...

  5. linux用于暂时锁定用户帐号的命令是,linux用于暂时锁定用户帐号的命令是()

    摘要: 表使兆欧查是用前要检好否完,用于暂偏转指针检查情况,置将兆其方且平稳放法是水平欧表,状态完好为(.定用变物突变下列质的根据的诱测诱率检法是发频.户帐号突变型之关系基因间的与表是(.... 表使 ...

  6. 测试环境启动时候进行清空redis所有缓存操作的java代码

    目录 目的: 1.调用代码逻辑如下:java-code 2.redis的事务处理,要小心重构掉!对于原子性原则上不进行破坏! 3.依赖Pom的配置 目的: 测试环境要重构的时候,会把所有的常量redi ...

  7. 在linux中运行c语言程序,linux环境中运行C语言程序

    在linux环境下做运行C语言程序 [root@localhost ~]# cat a.c #include main() {int grade; char chgrade; printf(" ...

  8. Linux中更新java代码命令,java代码执行linux命令

    1.容器需要先执行source命令,有权限限制的需要先打通互信. 2.复杂的shell命令,如重定向,需要传入数组. public void excuteLinuxCmd(String cmd) { ...

  9. linux安装java路径_Linux环境中查看java的安装路径,设置环境变量

    常用参数: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -A 同-a,但不列出"."(表示当前目录)和".."(表示当前目录的父目录). ...

最新文章

  1. Ext.data.GroupingStore
  2. Double Free浅析(泄露堆地址的一种方法)
  3. “赋值”与“初始化”
  4. mysql导出bacpac_在 Azure 中备份应用
  5. 如何用TensorFlow实现人工智能?
  6. 知方可补不足~UPDLOCK更新锁的使用
  7. 斜杠的意思是或还是和_央视网评丨“斜杠老师”,可别顾了赚钱丢了主业
  8. 树状数组(搬运自维基百科)
  9. ubuntu gif 制作工具
  10. 保护电路:简单的限流保护电路图
  11. PHP 二元线性拟合函数
  12. 计算机用户接入最快的,行测真题_2013-2017年固定互联网宽带接入用户数的年增长速度最快的年份是...
  13. 计算机死机启动方法,电脑开机死机的解决方法
  14. 苹果手机微信消息备份
  15. 《Miss Talk》第04期:对话凯叔讲故事 曲艳颂
  16. 3Dmax建模教程详细步骤3D建模速成入门到高级教程
  17. Crontab定时执行任务
  18. Mac配置/关闭代理命令
  19. 2021年科学突破奖:生命科学、基础物理学和数学奖得主揭晓
  20. python两张表对比不同_Python对比数据库两张表是否一致

热门文章

  1. 什么是Werkzeug
  2. intrinsics information是什么
  3. 项目文档与毕业论文排版
  4. ixia测试工具的全称_[转载] IXIA网络性能测试仪
  5. 天梯赛7-3 A-B
  6. 分布式事务解决方案 - SpringCloud Alibaba Seata
  7. 猜数字游戏随机生成一个随机数,并给玩家三次机会猜测
  8. java将图片转化为pdf并输出
  9. Laya引擎生产力工具LayaTree
  10. 基于Movingmnist结构制作predrnn++的训练数据过程记录