java任务队列_java 任务队列
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 queue = new LinkedList(); // 添加一项任务
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 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 queue = new LinkedList(); // 添加一项任务
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 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;
}
}
java任务队列_java 任务队列相关推荐
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- java 多线程 任务队列_Java并发编程线程池任务队列
类ThreadPoolExecutor最常使用的构造方法是: ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliv ...
- java 过载_java – ExecutorService,避免任务队列过载的标准方式
诀窍是使用固定的队列大小和: new ThreadPoolExecutor.CallerRunsPolicy() 我也建议使用Guava的ListeningExecutorService. 这是消费者 ...
- java任务_Java 任务处理
最近梳理其他同事以前写的 job 后有点想法,记录下. 一.业务场景 在大多数的系统都有类似这样的逻辑,比如下单了给用户赠送积分,用户在论坛上发表了帖子,给用户增加积分等等. 下单赠送积分,那么一个订 ...
- 普罗米修斯监控java项目_java学到什么程度可以出去实习?
把基础的知识学完,然后再学个框架,比如常见的SSH,SSM之类的,自己能用这个框架做个简单的项目,就可以了 简单的来说就是把下方的视频教程学完就可以找工作了(需要完整的资料可以找up) Java零基础 ...
- java计时器_Java 计时器
1.Timer and TimerTask: Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次. TimerTas ...
- python 任务队列 huey_Module-Huey任务队列
Huey 使用手册 环境依赖 Python2.7+ or Python3.4+ Huey简介 一个轻量Python2.7+ Python3.4+ 轻巧的消息队列. 功能说明 huey支持: 多进程,多 ...
- Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常
我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...
- java 原子量_Java原子量 - Rickxue的个人空间 - OSCHINA - 中文开源技术交流社区
所谓的原子量即操作变量的操作是"原子的",该操作不可再分,因此是线程安全的. 为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题.在Java5之前,可以通过vola ...
最新文章
- R语言双因素方差分析
- UML几个关系图表示
- C++判断网络是否连接
- 秒杀 mysql 事务_秒杀怎么样才可以防止超卖?基于mysql的事务和锁实现
- Win32串口操作的技巧
- oracle独立事务,Oracle中独立事务的处理
- vim支持nginx语法高亮
- Java练习 SDUT-1586_计算组合数
- mongo04---基本查询
- Modify HTTP Headers (Examples)
- 深入kubernetes之Pod——一pod多容器
- canvas转盘抽奖的实现(二)
- 数据结构 2-2 线性表的顺序表实现
- Java基础复习——访问权限
- Flash,EEPROM差别
- 北京市市级行政区域数据
- mysql 复制 数据 表结构_MySQL复制表结构和表数据
- Java使用Spring Boot、Maven、Spring RestTemplate集成腾讯云通信
- js基础 js函数作用域链
- BACnet/IP之BACnet4j学习java代码例子属性读写同网段跨主机02