Java任务队列的定义与代码的详细介绍

开发 后端
Java任务队列在不断的学习中需要我们掌握很多相关的技术信息。首先,下面我们就看看如何应用TaskQueue的具体问题。

Java任务队列需要我们详细的学习,当然我们在不断的使用中还需要注意相关信息的学习。下面我们就先来看看TaskQueue(任务队列)的具体应用。下面我们就详细的学习下。

在同一时刻,可能有很多任务需要执行,而程序在同一时刻只能执行一定数量的任务,当需要执行的任务数超过了程序所能承受的任务数时怎么办呢?这就有了先执行哪些任务,后执行哪些任务的规则。

TaskQueue类就定义了这些规则中的一种,它采用的是FIFO(先进先出,英文名是First In First Out)的方式,也就是按照任务到达的先后顺序执行。TaskQueue类的定义。

Java任务队列代码如下:

  1. import java.util.Iterator;   
  2. import java.util.LinkedList;   
  3. import java.util.List;   
  4. public class TaskQueue {   
  5. private List<Task> queue = new LinkedList<Task>();   
  6. // 添加一项任务   
  7. public synchronized void addTask(Task task) {   
  8. if (task != null) {   
  9. queue.add(task);   
  10. }   
  11. }   
  12. // 完成任务后将它从任务队列中删除   
  13. public synchronized void finishTask(Task task) {   
  14. if (task != null) {   
  15. task.setState(Task.State.FINISHED);   
  16. queue.remove(task);   
  17. }   
  18. }   
  19. // 取得一项待执行任务   
  20. public synchronized Task getTask() {   
  21. Iterator<Task> it = queue.iterator();   
  22. Task task;   
  23. while (it.hasNext()) {   
  24. task = it.next();   
  25. // 寻找一个新建的任务   
  26. if (Task.State.NEW.equals(task.getState())) {   
  27. // 把任务状态置为运行中   
  28. task.setState(Task.State.RUNNING);   
  29. return task;   
  30. }   
  31. }   
  32. return null;   
  33. }   
  34. }   
  35. import java.util.Iterator;  
  36. import java.util.LinkedList;  
  37. import java.util.List;  
  38. public class TaskQueue {  
  39. private List<Task> queue = new LinkedList<Task>();  
  40. // 添加一项任务  
  41. public synchronized void addTask(Task task) {  
  42. if (task != null) {  
  43. queue.add(task);  
  44. }  
  45. }  
  46. // 完成任务后将它从任务队列中删除  
  47. public synchronized void finishTask(Task task) {  
  48. if (task != null) {  
  49. task.setState(Task.State.FINISHED);  
  50. queue.remove(task);  
  51. }  
  52. }  
  53. // 取得一项待执行任务  
  54. public synchronized Task getTask() {  
  55. Iterator<Task> it = queue.iterator();  
  56. Task task;  
  57. while (it.hasNext()) {  
  58. task = it.next();  
  59. // 寻找一个新建的任务  
  60. if (Task.State.NEW.equals(task.getState())) {  
  61. // 把任务状态置为运行中  
  62. task.setState(Task.State.RUNNING);  
  63. return task;  
  64. }  
  65. }  
  66. return null;  
  67. }  

 

以上就是对Java任务队列的详细介绍。

【编辑推荐】

  1. JavaScript最让人费解的十件事
  2. 了解Java日志系统框架的设计与实现
  3. 在敏捷开发中编写高质量Java代码
  4. Java类中热替换的概念、设计与实现
  5. Python编程语言在Java中的使用效果
责任编辑:张浩 来源: CSDN
相关推荐

2010-03-18 14:27:53

Java Thread

2010-03-18 15:47:07

Java创建线程

2009-06-16 11:11:07

Java内存管理Java内存泄漏

2009-07-07 17:01:09

MyServlet

2011-07-08 17:26:38

JSFStruts

2010-03-18 14:46:18

Java SynDem

2010-03-19 10:31:06

Java Socket

2011-07-10 13:45:35

JAVA泛型

2010-07-12 14:06:12

SQL Server代

2010-03-29 14:09:12

Oracle ID 自

2011-07-22 16:37:01

java接口

2011-07-11 16:55:31

Java

2011-07-22 13:00:46

java

2010-03-18 16:19:02

Java自定义线程池

2010-07-06 14:32:02

2011-07-22 17:35:17

java路径

2010-03-25 13:19:57

Python_ast.

2010-03-18 18:20:34

Java Socket

2011-07-11 17:33:25

JAVA可移植性

2011-07-11 15:02:54

枚举
点赞
收藏

51CTO技术栈公众号