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. Java 学习笔记(15)——反射

    Java中的类文件最终会被编译为.class 文件,也就是Java字节码.这个字节码中会存储Java 类的相关信息.在JVM执行这些代码时首先根据 java 命令中指定的类名找到.class 文件然后 ...

  2. 三、解析class文件

    一.class文件 https://blog.csdn.net/tyyj90/article/details/78472986 https://blog.csdn.net/sinat_38259539 ...

  3. python密码输入模块getpass

    import getpass pwd = getpass.getpass("请输入密码") print(pwd)

  4. JS事件之自建函数bind()与兼容性问题解决

    JavaScript事件绑定常用方法 对象.事件 = 函数; 它只能同时为一个对象的一个事件绑定一个响应函数 不能绑定多个,如果有多个,后面的会覆盖前面的 addEventListener() 此方法 ...

  5. DEVOPS技术实践_12:创建持续集成的管道

    持续集成不仅包含了Jenkins或者相关其它的CI工具,也包含了包含代码如何控制,采用的什么分支策略等.不同的组织可能采用不同的类型的策略来完成CI,策略类型和项目的类型的有很大的关系. 一 分支策略 ...

  6. 017 Ceph的集群管理_3

    一.验证OSD 1.1 osd状态 运行状态有:up,in,out,down 正常状态的OSD为up且in 当OSD故障时,守护进程offline,在5分钟内,集群仍会将其标记为up和in,这是为了防 ...

  7. 搜索排序-learning to Rank简介

    Learning to Rank pointwise \[ L\left(f ; x_{j}, y_{j}\right)=\left(y_{j}-f\left(x_{j}\right)\right)^ ...

  8. TensorFlow之tf.less()

    函数:tf.less less( x, y, name=None ) 以元素方式返回(x <y)的真值. 注意:Less支持广播. 参数: x:张量.必须是下列类型之一:float32,floa ...

  9. 机器学习——EM算法与GMM算法

    目录 最大似然估计 K-means算法 EM算法 GMM算法(实际是高斯混合聚类) 中心思想:①极大似然估计 ②θ=f(θold) 此算法非常老,几乎不会问到,但思想很重要. EM的原理推导还是蛮复杂 ...

  10. MapReduce-自动化运行配置

    1.打包时指定main  Class信息 注意:默认直接通过maven插件打成jar包中没有指定main class信息,因此在运行mapreduce的jar包时必须在指令后明确main class信 ...