Java任务队列在不断的学习中需要我们掌握很多相关的技术信息。
首先,下面我们就看看如何应用TaskQueue的具体问题。
Java任务队列需要我们详细的学习,
当然我们在不断的使用中还需要注意相关信息的学习。
下面我们就先来看看TaskQueue(任务队列)的具体应用。
下面我们就详细的学习下。
在同一时刻,可能有很多任务需要执行,
而程序在同一时刻只能执行一定数量的任务,
当需要执行的任务数超过了程序所能承受的任务数时怎么办呢?
这就有了先执行哪些任务,后执行哪些任务的规则。
TaskQueue类就定义了这些规则中的一种,它采用的是FIFO(先进先出,英文名是First In
First Out)的方式,也就是按照任务到达的先后顺序执行。TaskQueue类的定义。
Java任务队列代码如下:
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class TaskQueue {
private List<Task> queue = new LinkedList<Task>(); // 添加一项任务
public synchronized void addTask(Task task) {
if (task != null) {
queue.add(task);
}
} // 完成任务后将它从任务队列中删除
public synchronized void finishTask(Task task) {
if (task != null) {
task.setState(Task.State.FINISHED);
queue.remove(task);
}
} // 取得一项待执行任务
public synchronized Task getTask() {
Iterator<Task> it = queue.iterator();
Task task;
while (it.hasNext()) {
task = it.next(); // 寻找一个新建的任务
if (Task.State.NEW.equals(task.getState())) { // 把任务状态置为运行中
task.setState(Task.State.RUNNING);
return task;
}
}
return null;
}
}
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class TaskQueue {
private List<Task> queue = new LinkedList<Task>(); // 添加一项任务
public synchronized void addTask(Task task) {
if (task != null) {
queue.add(task);
}
} // 完成任务后将它从任务队列中删除
public synchronized void finishTask(Task task) {
if (task != null) {
task.setState(Task.State.FINISHED);
queue.remove(task);
}
} // 取得一项待执行任务
public synchronized Task getTask() {
Iterator<Task> it = queue.iterator();
Task task;
while (it.hasNext()) {
task = it.next(); // 寻找一个新建的任务
if (Task.State.NEW.equals(task.getState())) { // 把任务状态置为运行中
task.setState(Task.State.RUNNING);
return task;
}
}
return null;
}
}
分享到:
相关推荐
NULL 博文链接:https://noddle0592.iteye.com/blog/2185620
Java/Android优先级任务队列,适用于Java和Android开发人员,原理详解博客:http://blog.csdn.net/yanzhenjie1003/article/details/71773950
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
Java Queue,scheduler,ThreadPoolManager,两套例子,直接可以运行的。
java实现队列执行任务,限制线程执行的个数
多层时间轮,可根据配置的时间轮大小参数以及插入任务的相对时间,动态地创建不同层次的时间轮实例(这里的多层时间轮采用了...引入了延时队列以减少空轮询,将时间轮的推进与任务的提交执行隔离开,提升模型的效率。
一个Java任务队列框架。 可以具有任何后备存储(仅实现另一个TaskStore),但随内存和Redis一起提供(用于分布式队列) 特征 使用Redis作为后备存储时分发。 尚无分片支持。 嵌入式存储-用于没有大量队列的非...
消息分发框架,基于java阻塞队列实现,生产者消费者模型 可用于任务分发,服务器消息消息,以及网络IO 性能优化,多线程
定义全局线程池,将用户的请求放入自定义队列中,排队等候线程调用,等待超时则自动取消该任务,实现超时可取消的异步任务
最后,调用deploy方法部署任务队列,并可选择性地添加或移除任务。LsCron适用于各种需要定时执行任务的场景,例如在特定时间修改状态、定时发送邮件等。使用该工具可以让你的定时任务更加高效、可靠。
一个 Android 开发库, 可以任意切换线程的链式调用任务队列, 可添加定时, 延时任务, 统一异常处理(Ceased 中断),但不影响整个任务链的运行.
基于DelayQueue的简单的定时任务队列.zip Quick Start class Main { public static void main(String[] args) { // 初始化任务队列 JobScheduler scheduler = new JobScheduler("default"); // 向队列中提交任务...
本人自己做的类,虽说只是测试版,但已经可以胜任一部分任务了 PS:双向队列是基础类,单调队列、单调栈是结果类
对于消息队列的监听,我们一般使用Java写一个独立的程序,在Linux服务器上运行。程序启动后,通过消息队列客户端接收...这篇文章主要给大家介绍了关于Java中消息队列任务的平滑关闭的相关资料,需要的朋友可以参考下。
基于Java 异步任务队列。 利用代码生成减少样板类定义。 使用 Factotum 定义任务和请求 创建一个具有默认零参数构造函数的非抽象类。 在这个类中创建一个包含将异步运行的代码的方法。 package com.example; ...
使用Quartz来执行这个任务,当取回来邮件的时候,可能一次性取出来多封邮件,然而在发往另一个服务端的时候,没发送一封...本人做了一个队列,一次取回的多封邮件放在队列里面,然后定制任务,每隔一分钟去发一封邮件
redis、delayqueue相关代码https://blog.csdn.net/sinat_38273626/article/details/80483014
java + springboot 架构,整合Schedue,实现定时任务处理
适用于按顺序处理的队列任务!队列消息等,有常用到这方面技术的朋友,可以一起交流,谢谢!
任务的优先队列 基于任务的PriorityQueue的实现在此程序中,用户可以: 注册新任务,并传递名称和优先级 提取并返回列表中优先级最低的任务 清除任务列表 列出所有待处理的任务及其优先级 导入和导出CSV文件中的...