QuartZ的线程锁
2016-06-15 16:34
337 查看
1. 自定义QuartZ的并发锁 1 using System;
2 using System.Threading;
3 using log4net;
4 using Quartz;
5
6 namespace HK.Gramma.Business
7 {
8 [DisallowConcurrentExecution]
9 public class SecondTimeJob : IJob
{
/// <summary>
/// 线程访问计数
/// </summary>
private static int _visitCount = 0;
/// <summary>
/// 日志工具
/// </summary>
private static readonly ILog Logger = LogManager.GetLogger("SecondTimeJob");
/// <summary>
/// 执行定时任务
/// </summary>
/// <param name="context">上下文</param>
public void Execute(IJobExecutionContext context)
{
try
{
Logger.InfoFormat("开始任务,线程ID={0}", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(5000);
_visitCount++;
Logger.InfoFormat("结束任务,线程ID={0},访问总数={1}", Thread.CurrentThread.ManagedThreadId, _visitCount);
}
catch (Exception ex)
{
Logger.ErrorFormat("任务异常\r\n{0}", ex);
}
}
}
} View Code测试结果如下:
2015-09-08 20:42:30,001 [ServiceScheduler_Worker-2] INFO SecondTimeJob [(null)] - 开始任务,线程ID=4
2015-09-08 20:42:35,001 [ServiceScheduler_Worker-2] INFO SecondTimeJob [(null)] - 结束任务,线程ID=4,访问总数=1
2015-09-08 20:42:35,001 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 开始任务,线程ID=8
2015-09-08 20:42:40,002 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 结束任务,线程ID=8,访问总数=2
2015-09-08 20:42:40,002 [ServiceScheduler_Worker-9] INFO SecondTimeJob [(null)] - 开始任务,线程ID=11
2015-09-08 20:42:45,003 [ServiceScheduler_Worker-9] INFO SecondTimeJob [(null)] - 结束任务,线程ID=11,访问总数=3
2015-09-08 20:42:45,003 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 开始任务,线程ID=6
2015-09-08 20:42:50,004 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 结束任务,线程ID=6,访问总数=4
2015-09-08 20:42:50,004 [ServiceScheduler_Worker-7] INFO SecondTimeJob [(null)] - 开始任务,线程ID=9
2015-09-08 20:42:55,004 [ServiceScheduler_Worker-7] INFO SecondTimeJob [(null)] - 结束任务,线程ID=9,访问总数=5
2015-09-08 20:42:55,005 [ServiceScheduler_Worker-1] INFO SecondTimeJob [(null)] - 开始任务,线程ID=3
2015-09-08 20:43:00,006 [ServiceScheduler_Worker-1] INFO SecondTimeJob [(null)] - 结束任务,线程ID=3,访问总数=6
2015-09-08 20:43:00,007 [ServiceScheduler_Worker-5] INFO SecondTimeJob [(null)] - 开始任务,线程ID=7
2015-09-08 20:43:05,007 [ServiceScheduler_Worker-5] INFO SecondTimeJob [(null)] - 结束任务,线程ID=7,访问总数=7
2015-09-08 20:43:05,007 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 开始任务,线程ID=8
2015-09-08 20:43:10,008 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 结束任务,线程ID=8,访问总数=8
2015-09-08 20:43:10,012 [ServiceScheduler_Worker-3] INFO SecondTimeJob [(null)] - 开始任务,线程ID=5
2015-09-08 20:43:15,012 [ServiceScheduler_Worker-3] INFO SecondTimeJob [(null)] - 结束任务,线程ID=5,访问总数=9
2015-09-08 20:43:15,012 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 开始任务,线程ID=6
2015-09-08 20:43:20,013 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 结束任务,线程ID=6,访问总数=10
2 using System.Threading;
3 using log4net;
4 using Quartz;
5
6 namespace HK.Gramma.Business
7 {
8 [DisallowConcurrentExecution]
9 public class SecondTimeJob : IJob
{
/// <summary>
/// 线程访问计数
/// </summary>
private static int _visitCount = 0;
/// <summary>
/// 日志工具
/// </summary>
private static readonly ILog Logger = LogManager.GetLogger("SecondTimeJob");
/// <summary>
/// 执行定时任务
/// </summary>
/// <param name="context">上下文</param>
public void Execute(IJobExecutionContext context)
{
try
{
Logger.InfoFormat("开始任务,线程ID={0}", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(5000);
_visitCount++;
Logger.InfoFormat("结束任务,线程ID={0},访问总数={1}", Thread.CurrentThread.ManagedThreadId, _visitCount);
}
catch (Exception ex)
{
Logger.ErrorFormat("任务异常\r\n{0}", ex);
}
}
}
} View Code测试结果如下:
2015-09-08 20:42:30,001 [ServiceScheduler_Worker-2] INFO SecondTimeJob [(null)] - 开始任务,线程ID=4
2015-09-08 20:42:35,001 [ServiceScheduler_Worker-2] INFO SecondTimeJob [(null)] - 结束任务,线程ID=4,访问总数=1
2015-09-08 20:42:35,001 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 开始任务,线程ID=8
2015-09-08 20:42:40,002 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 结束任务,线程ID=8,访问总数=2
2015-09-08 20:42:40,002 [ServiceScheduler_Worker-9] INFO SecondTimeJob [(null)] - 开始任务,线程ID=11
2015-09-08 20:42:45,003 [ServiceScheduler_Worker-9] INFO SecondTimeJob [(null)] - 结束任务,线程ID=11,访问总数=3
2015-09-08 20:42:45,003 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 开始任务,线程ID=6
2015-09-08 20:42:50,004 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 结束任务,线程ID=6,访问总数=4
2015-09-08 20:42:50,004 [ServiceScheduler_Worker-7] INFO SecondTimeJob [(null)] - 开始任务,线程ID=9
2015-09-08 20:42:55,004 [ServiceScheduler_Worker-7] INFO SecondTimeJob [(null)] - 结束任务,线程ID=9,访问总数=5
2015-09-08 20:42:55,005 [ServiceScheduler_Worker-1] INFO SecondTimeJob [(null)] - 开始任务,线程ID=3
2015-09-08 20:43:00,006 [ServiceScheduler_Worker-1] INFO SecondTimeJob [(null)] - 结束任务,线程ID=3,访问总数=6
2015-09-08 20:43:00,007 [ServiceScheduler_Worker-5] INFO SecondTimeJob [(null)] - 开始任务,线程ID=7
2015-09-08 20:43:05,007 [ServiceScheduler_Worker-5] INFO SecondTimeJob [(null)] - 结束任务,线程ID=7,访问总数=7
2015-09-08 20:43:05,007 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 开始任务,线程ID=8
2015-09-08 20:43:10,008 [ServiceScheduler_Worker-6] INFO SecondTimeJob [(null)] - 结束任务,线程ID=8,访问总数=8
2015-09-08 20:43:10,012 [ServiceScheduler_Worker-3] INFO SecondTimeJob [(null)] - 开始任务,线程ID=5
2015-09-08 20:43:15,012 [ServiceScheduler_Worker-3] INFO SecondTimeJob [(null)] - 结束任务,线程ID=5,访问总数=9
2015-09-08 20:43:15,012 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 开始任务,线程ID=6
2015-09-08 20:43:20,013 [ServiceScheduler_Worker-4] INFO SecondTimeJob [(null)] - 结束任务,线程ID=6,访问总数=10
相关文章推荐
- ios开发跳转
- android sdk下载
- centos下使用如何配置java守护进程
- hadoop 学习笔记:mapreduce框架详解
- 利用JMeter的beanshell进行接口的加密处理
- 第十二周阅读程序2
- python中获取div的文本内容并和想定结果进行对比
- 如何分开设定sim卡插卡和拔卡的debounce time
- DEDECMS自定义操作数据库
- centos7 安装nvm
- js刷新页面方法大全
- JavaScript闭包--模仿块级作用域
- Html5调用android 本地的方法
- Hadoop 使用FileSystem API 读取数据
- array_multisort
- Git 代码管理常用命令
- WebService学习——使用CXF编写WebService服务端
- 每天一道ACM(三)
- Architecture And Framework
- JPEG文件编/解码详解