using System;
using System.Collections.Generic;
using System.Threading; namespace ConsoleApplication1
{
public static class Class1
{
static Queue<string> MsgQueue = new Queue<string>();
//创建一个没有其他用途的对象作为锁,微软官方推荐做法
private static Object thisLock = new Object(); static Class1()
{
ThreadPool.QueueUserWorkItem(q =>
{
while (true)
{
lock (thisLock)
{
if (MsgQueue.Count > )
{
string msg = MsgQueue.Dequeue();
//把内容记录起来之类的操作...
}
else
{
//队列中没有东西,就让线程休息下
Thread.Sleep();
}
}
}
});
} public static void Insert(string msg)
{
lock (thisLock)
{
MsgQueue.Enqueue(msg);
}
}
}
}

队列demo

Quartz.Net和队列结合控制台demo

 using Quartz;
using Quartz.Impl; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int i = ; i <= ; i++)
{
TestJob.Insert($"str{i} ");
} //计划者
IScheduler sched = StdSchedulerFactory.GetDefaultScheduler();
//作业
IJobDetail job1 = new JobDetailImpl("Job1", "JobGroup1", typeof(TestJob));
//触发器
ITrigger trigger1 = TriggerBuilder.Create()
.WithIdentity("Trigger1", "TriggerGroup1")
.StartNow() //现在开始
.WithSimpleSchedule(x => x
.WithIntervalInSeconds() //5秒一次
.RepeatForever()) //不断重复
.Build(); ////存值
//job1.JobDataMap.Add("key1", "value1"); sched.ScheduleJob(job1, trigger1);
sched.Start();
         Console.Read();
}
}
}
 using Quartz;
using System;
using System.Collections.Generic;
using System.Threading; namespace ConsoleApplication1
{
public class TestJob : IJob //想成为作业就要实现此接口
{
static Queue<string> MsgQueue = new Queue<string>();
private static Object thisLock = new Object(); public static void Insert(string msg)
{
lock (thisLock)
{
MsgQueue.Enqueue(msg);
}
} public void Execute(IJobExecutionContext context)
{
lock (thisLock)
{
if (MsgQueue.Count > )
{
string msg = MsgQueue.Dequeue();
Console.WriteLine(msg + DateTime.Now.ToString());
}
else
{
//队列中没有东西,就让线程休息下
Thread.Sleep();
}
} ////取值
//JobDataMap dataMap = context.JobDetail.JobDataMap;
//string content = dataMap.GetString("key1");
//Console.WriteLine("作业执行,jobSays:" + content);
}
}
}

Quartz.Net和队列应用demo的更多相关文章

  1. lesson2:java阻塞队列的demo及源码分析

    本文向大家展示了java阻塞队列的使用场景.源码分析及特定场景下的使用方式.java的阻塞队列是jdk1.5之后在并发包中提供的一组队列,主要的使用场景是在需要使用生产者消费者模式时,用户不必再通过多 ...

  2. java类中使用quartz,设置自动任务Demo

    package com.tech.jin.jobScheduler; import java.text.ParseException; import java.util.ArrayList; impo ...

  3. 消息队列 简单demo

    可以使用Windows自带计划任务执行Receive操作. 控制面板=>管理工具 计划任务 =>创建计划任务 step : http://www.2cto.com/kf/201402/27 ...

  4. Java Design Demo -简单的队列-异步多任务队列(java android)

    简单的单线程队列 -- 工作的时候遇到劣质打印机.给打印机发消息,打印机就会打印,如果在打印机还在打印的时候,就 再发消息打印,就会出现消息丢失.所以需要给上一个任务一些处理的间隔时间. 单线程的消息 ...

  5. 数据结构之循环队列Demo

    循环队列 比较简单,循环队列主要是判断队满.队空.有效元素个数 画图说明: 假设:队的长度为5(0-4) 但是实际maxsize为6,需要一个预留空间(不存储元素)做计算 继续添加3个元素后: 出队一 ...

  6. PHP的轻量消息队列php-resque使用说明

    日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. 消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要 ...

  7. 文件 FIFO队列

    <?php /** * Filefifo.php 文件型FIFO队列 */ class Filefifo { /** * $_file_data, 数据文件的路径 */ private $_fi ...

  8. PetShop 4.0学习笔记:消息队列MSMQ

    直到今天才知道,在我们每天都在用的Window系统里还有这么好用的一个编程组件:消息队列.它能够解决在大数据量交换的情况下的性能问题,特别是BS系统的数据库性能.而且它的异步处理方式能给程序员最大的便 ...

  9. CoreJava_线程并发(堵塞队列):在某个目录下搜索含有某keyword的文件

    Java多线程编程是很考验一个程序猿水平的. 传统的WEB程序中.由于框架提供了太多的健壮性.并发性.可靠性的支持,所以我们都是将全部的注意力放到了业务实现上.我们不过依照业务逻辑的要求.不停的积累自 ...

随机推荐

  1. Cisco DNA网络POC

    角色名词解释 拓扑图 集成ISE

  2. JVM内存结构探秘及编码实战

    了解JVM内存结构的目的 在Java的开发过程中,因为有JVM自动内存管理机制,不再需要像在C.C++开发那样手动释放对象的内存空间,不容易出现内存泄漏和内存溢出的问题.但是,正是由于把内存管理的权利 ...

  3. 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)

    前言: 干了这么多年的iOS,虽然接触了许多七七八八的东西.技术,但是感觉本身iOS却没有什么质的飞越,可能跟自己接触的项目深度有关,于是决定在学习其他技术的同时,加强自己在iOS方面的学习,提高自己 ...

  4. 阿里面试官让我讲讲Unicode,我讲了3秒说没了,面试官说你可真菜

    本文首发于微信公众号:程序员乔戈里 乔哥:首先说说什么是Unicode.码点吧~要想搞懂,这些概念必须清楚 什么是Unicode? 下图来自http://www.unicode.org/standar ...

  5. 优雅的使用BeanUtils对List集合的操作

    摘要 在业务员流程的时候,我们在Entity.Bo.Vo层数据间可能经常转换数据,Entity对应的是持久层数据结构(一般是数据库表的映射模型).Bo对应的是业务层操作的数据结构.Vo就是Contro ...

  6. 洛谷$ P$4317 花神的数论题 数位$dp$

    正解:数位$dp$ 解题报告: 传送门! 开始看到感觉有些新奇鸭,仔细一想发现还是个板子鸭,,, 考虑设$f_{i}$表示$sum[j]=i$的$j$的个数 日常考虑$dfs$呗,考虑变量要设哪些$Q ...

  7. linux权限说明

    Linux 中的权限 这里我拿一个tomcat目录举例说明.首先我们在linux系统中执行命令:ls -l 我们拿出其中一个说明-rwxr-xr-x,在Linux 系统中权限是区分用户的,即用户.组用 ...

  8. mysql 执行计划查看

    使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈.explain执行计划包含的信息 其中最重要的字段为:id ...

  9. C# DataTable数据类型判断

    当我们从数据中获取到数据,一般会使用 DataTable 接收,然后会遍历每行数据.由于从数据库中读取的数据可能为空,比如我们的编译代码如下: foreach (DataRow datarow in ...

  10. Windows系统下批处理快速创建WIFI

    为什么要用cmd这种古老的东西创建wifi呢,电脑管家.360安全卫士都有这种插件,一键开启关闭,多方便啊! 开始用的也是电脑管家的免费wifi插件,但是我越来越不能忍它极慢的启动关闭过程,每一次看着 ...