如何解决查找当前正在执行Quartz Job的线程!
| 我正在寻找解决方案以获取当前正在执行石英作业的线程名称。在我的应用程序中,石英使用属性进行配置,作业触发器由数据库驱动。 在这里,我将实例化石英并启动它。StdSchedulerFactory factory = new StdSchedulerFactory(configFile);
Scheduler scheduler = factory.getScheduler();
scheduler.addGlobalJobListener(new QuartzJobListener());
scheduler.addGlobalTriggerListener(new QuartzTriggerListener());
scheduler.start();
能够获得石英JOB和TRIGGER的详细信息,如下所示:
try{
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
List<JobExecutionContext> jobList = scheduler.getCurrentlyExecutingJobs();
for(JobExecutionContext jobExecutionContext : jobList){
// JOB Details
JobDetail jobDetail = jobExecutionContext.getJobDetail();
String strJobName = jobDetail.getName();
String strDescription = jobDetail.getDescription();
// Trigger Details
Trigger trigger = jobExecutionContext.getTrigger();
String strTriggerName = trigger.getName();
String strFireInstanceId = trigger.getFireInstanceId();
int state = scheduler.getTriggerState(trigger.getName(),trigger.getGroup());
}
}catch(Exception e){
e.printStackTrace();
}
我的问题是-我如何获取执行当前作业的线程名称?
这是解决相同问题的问题,但截至目前还没有任何解决方案的答复。
解决方法
您可以添加一个
private Thread thead;
变量为Job类,并在execute()
方法中进行设置
thread = Thread.currentThread();
,如果仅是调试和跟踪,请在执行程序内部使用一些智能日志记录,并且不要弄乱线程(您不想去那里)。
我不确定Quartz是否会通过其API向您提供此信息。但是,您可以将Quartz配置为与您的线程池一起使用,然后获取执行程序线程信息将更加容易。您可以为此使用CommonJ。
祝好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。