ThatGamerBlue2

threadsafe queue

Feb 21st, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. package com.aaaaa.bbbbb.threads;
  2.  
  3. import com.aaaaa.bbbbb.Main;
  4. import com.aaaaa.bbbbb.tasks.Task;
  5.  
  6. import java.util.*;
  7.  
  8. public class TaskHandler extends Thread {
  9.  
  10. private List<Task> taskList = Collections.synchronizedList(new ArrayList<>());
  11. private List<Task> toAdd = Collections.synchronizedList(new ArrayList<>());
  12. Timer timer = new Timer();
  13.  
  14. public TaskHandler(Main s) {
  15. super();
  16. }
  17.  
  18. public void run() {
  19. while (true) {
  20. try {
  21. taskList.addAll(toAdd);
  22. toAdd.clear();
  23. Iterator<Task> itr = taskList.iterator();
  24. while(itr.hasNext()) {
  25. Task t = itr.next();
  26. if (t == null) {
  27. itr.remove();
  28. } else if (t.validate()) {
  29. Task t2 = t.deepCopy();
  30. t2.execute();
  31. itr.remove();
  32. }
  33. //Thread.sleep(50);
  34. }
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. }
  38. }
  39. }
  40.  
  41. public void addTask(Task task) {
  42. toAdd.add(task);
  43. }
  44.  
  45. public void addAllTasks(List<Task> list) {
  46. toAdd.addAll(list);
  47. }
  48.  
  49. public String toString() {
  50. StringBuilder s = new StringBuilder();
  51. for(Task t : taskList) {
  52. s.append(t.toString()).append("\n");
  53. }
  54. return s.toString();
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment