`
jasonw68
  • 浏览: 153066 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java 任务队列

    博客分类:
  • J2SE
阅读更多
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;  
	}  
} 

 

分享到:
评论

相关推荐

    java实现的任务队列

    NULL 博文链接:https://noddle0592.iteye.com/blog/2185620

    Android中的线程池与任务队列

    线程池和任务队列是实现这一目标的关键工具。本文将深入探讨Android中线程池与任务队列的概念、工作原理以及它们如何协同工作。 线程池(ThreadPool)是一种多线程处理形式,处理过程中将任务添加到队列,然后在...

    java 定制任务的使用Quartz,使用队列处理参数

    使用Quartz来执行这个任务,当取回来邮件的时候,可能一次性取出来多封邮件,然而在发往另一个服务端的时候,没发送一封...本人做了一个队列,一次取回的多封邮件放在队列里面,然后定制任务,每隔一分钟去发一封邮件

    JAVA 实现延迟队列的方法

    JAVA 实现延迟队列的方法 JAVA 实现延迟队列的方法是指在 JAVA 中实现延迟队列的方法,即在特定的延迟时间后触发某个事件,这种机制广泛应用于日常开发的场景中,例如用户登录之后5分钟给用户做分类推送、用户多少...

    优先队列-java可以选择属性和升序降序

    优先队列在Java编程中是一种特殊的数据结构,它遵循特定的出队顺序,通常是最小元素(最小优先队列)或最大元素(最大优先队列)先出队。这种数据结构在解决各种问题时非常有用,例如任务调度、事件驱动编程、搜索...

    Java消息队列常见面试题2022

    - **异步处理**:消息队列允许系统将非实时任务放入队列,从而避免阻塞主线程,提高响应速度。 - **服务解耦**:消息队列作为中介,使得服务之间不需要直接交互,降低耦合度。 - **流量控制**:在面临流量洪峰时...

    用数组实现的优先队列(JAVA)

    优先队列常用于解决具有优先级的问题,如任务调度、事件处理、最短路径计算(Dijkstra算法)等。 7. **扩展思考** - 当数组容量不足时,如何动态扩容? - 如何实现一个最大堆,其中队首元素具有最高优先级? - ...

    阻塞队列阻塞队列阻塞队列

    在Java编程语言中,阻塞队列是一种线程安全的数据结构,它在多线程并发控制中发挥着重要作用。阻塞队列的核心特性是当队列为空时,尝试获取元素的线程会被阻塞,直到其他线程添加元素;同样,当队列满时,试图插入...

    java 自定义Queue队列

    队列是一种非常基础且实用的数据结构,广泛应用于多线程同步、任务调度、缓存管理等多个场景。自定义Queue队列意味着我们需要创建一个类来实现Queue接口,以满足特定的需求或性能优化。 首先,让我们了解一下`java....

    Java实现的线程池、消息队列功能

    标题中的“Java实现的线程池、消息队列功能”是指在Java编程中,如何利用编程技术实现线程池和消息队列这两种重要的并发处理机制。线程池和消息队列是解决多线程环境下资源管理和任务调度的有效手段,它们在高并发、...

    JAVA建立队列与堆栈

    在Java编程语言中,队列和堆栈是两种基本且重要的数据结构,它们在处理数据组织和流程控制方面起着至关重要的作用。本篇将详细解释如何在Java中创建队列和堆栈,并探讨相关的核心概念。 首先,队列是一种遵循“先进...

    java利用delayedQueue实现本地的延迟队列

    Java 利用 DelayedQueue 实现本地的延迟队列 DelayedQueue 是 Java 中的一种特殊的阻塞队列,它用于存放实现了 Delayed 接口的对象。这种队列是有序的,即队头对象的延迟到期时间最长。 DelayedQueue 能够满足我们...

    java队列

    3. **并发工具**:Java并发库提供了一些工具类,如`ExecutorService`和`ThreadPoolExecutor`,它们使用队列来管理待执行的任务。这些工具可以帮助开发者有效地管理和控制并发执行的线程。 4. **优先级队列**:`...

    java多线程加队列上传文件_后台处理

    ### Java多线程加队列上传文件_后台处理 #### 概述 本文将详细介绍一个基于Java实现的多线程文件上传系统,并结合队列管理技术来优化后台处理流程。该系统通过创建多个线程来并行处理客户端的文件上传请求,同时...

    java多线程模拟队列实现排队叫号

    在Java中,我们可以使用`java.util.Queue`接口及其实现类,如`LinkedList`或`ArrayDeque`来创建队列。 接下来,我们需要创建两个线程类:一个是`CustomerThread`,代表等待叫号的客户,另一个是`ServiceThread`,...

    Java 消息队列,调度器,线程池

    Java Queue,scheduler,ThreadPoolManager,两套例子,直接可以运行的。

    java 多线程 队列工厂

    在Java编程中,多线程和队列是两个非常重要的概念,它们对于构建高效、可扩展的并发应用程序至关重要。队列工厂则是实现多线程间通信和任务调度的一种设计模式,它提供了一种抽象和统一的方式来创建和管理队列实例。...

    java定时器\多线程(池)\java队列Demo

    Java编程语言在处理并发任务和时间调度方面提供了丰富的工具,其中`java定时器`、`多线程(池)`和`java队列`是核心概念。让我们深入探讨这些主题。 ### 1. Java定时器(java.util.Timer) `java.util.Timer` 类允许...

    Java Design Demo -简单的队列

    描述中提到的“java android”表明这个示例可能特别针对Android环境下的Java开发,这意味着队列可能被用来解决Android应用中的特定问题,例如管理UI线程与后台任务之间的通信,或者实现高效的消息传递机制。...

    基于java优先队列(PriorityQueue)的多路排序算法(含代码)

    在Java编程中,优先队列(PriorityQueue)是一种特殊的队列,它按照元素的优先级进行出队。...在实际应用中,优先队列还能用于其他各种需要根据元素优先级进行操作的问题,如任务调度、事件处理等。

Global site tag (gtag.js) - Google Analytics