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. Consul etcd ZooKeeper euerka 对比

    这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论: Feature Consul zookeeper etcd euerka 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,kee ...

  2. CITRIX VPX安装

    Step 1:下载.ova格式的VPX,如下图: Step 2:初始化VPX,如下图: 本例设置NSIP为192.168.188.150/24 Step 3:打开浏览器http://192.168.1 ...

  3. 【Kubernetes】容器集群管理常用命令笔记

    一.集群部署-查询集群状态 ①查询k8s master各组件健康状态: kubectl get componentstatus ②查询k8s node健康状态: kubectl get node 二. ...

  4. struts2中的数据类型自动转换

    参考:https://blog.csdn.net/qq_35326718/article/details/72453042 https://www.cnblogs.com/aigeileshei/p/ ...

  5. mysql中information_schema.views字段说明

    1.查看视图并不是查询视图数据,而是查看数据库中已经存在的视图的定义,查看视图必须要有SHOW VIEW权限,MySQL的数据库下的user表中存储这这个数据.查看视图的方法有:DESCRIBE,SH ...

  6. java的package和import机制

    在说package.import机制前我们先来了解下java的CLASSPATH. CLASSPATH顾名思义就是class的路径,当我们在系统中运行某个java程序时,它就会告诉系统在这些地方寻找这 ...

  7. C# ref参数

    ref关键字用于将方法内的变量改变后带出方法外.具体我们通过例子来说明: static void Main(string[] args) { int c = 0; Add(1, 2,ref c); C ...

  8. $Poj3017\ Cut\ The\ Sequence$ 单调队列优化$DP$

    Poj   AcWing Description 给定一个长度为N的序列 A,要求把该序列分成若干段,在满足“每段中所有数的和”不超过M的前提下,让“每段中所有数的最大值”之和最小. N<=10 ...

  9. Spring 配置内容外部化

  10. 「USACO11NOV」牛的障碍Cow Steeplechase 解题报告

    题面 横的,竖的线短段,求最多能取几条没有相交的线段? 思路 学过网络流的童鞋在哪里? 是时候重整网络流雄风了! 好吧,废话不多说 这是一道最小割的题目 怎么想呢? 要取最多,那反过来不就是不能取的要 ...