Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.03 KB | None | 0 0
  1. МЭЙН:
  2.  
  3. public class Main {
  4.  
  5.     private static Thread[] tPool;
  6.     static TaskQueue tq;
  7.    
  8.     public static void main(String[] args) throws InterruptedException {
  9.        
  10.         tq = new TaskQueue();
  11.         tq.push(new MyTask(1,50));
  12.         tq.push(new MyTask(5,30));
  13.         tq.push(new MyTask(1,4));
  14.         tq.push(new MyTask(2,15));
  15.         tq.push(new MyTask(1,50));
  16.         tq.push(new MyTask(5,30));
  17.         tq.push(new MyTask(1,4));
  18.         tq.push(new MyTask(2,15));
  19.        
  20.        
  21.         tPool = new Thread[2];
  22.        
  23.         for (int i=0; i < 2; i++) {
  24.             tPool[i] = new Thread(){
  25.  
  26.                 @Override
  27.                 public void run() {
  28.                     MyTask task;
  29.                     while(!tq.isEndOfQueue()) {
  30.                         synchronized(tq) {
  31.                             if((task = tq.pop()) != null){
  32.                                 for(int i = task.getStart(); i <= task.getEnd(); i++)
  33.                                 if(isSimple(i))
  34.                                     task.addAnswer(i);
  35.                             task.setDone(true);
  36.                             tq.push(task);
  37.                             }
  38.                         }
  39.                     }
  40.                  }
  41.               };
  42.               tPool[i].start();
  43.               tPool[i].join();
  44.             }
  45.        
  46.         tq.showResult();
  47.     }
  48.    
  49.     public static boolean isSimple(final int n) {
  50.         for(int i=2;i<=Math.sqrt(n);i++)
  51.             if(n%i==0)
  52.                 return false;
  53.         return true;
  54.     }
  55. }
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. ОЧЕРЕДЬ:
  63.  
  64. import java.util.LinkedList;
  65.  
  66.  
  67. public class TaskQueue {
  68.    
  69.     private LinkedList<MyTask> list;
  70.    
  71.     public TaskQueue() {
  72.         list = new LinkedList<>();
  73.     }
  74.    
  75.     public MyTask pop() {
  76.         synchronized(list) {
  77.             if(!list.getFirst().isDone())
  78.             return list.removeFirst();
  79.         return null;
  80.         }
  81.     }
  82.    
  83.     public void push(MyTask task) {
  84.         synchronized(list) {
  85.             list.addLast(task);
  86.         }
  87.     }
  88.  
  89.     public void showResult() {
  90.         synchronized(list) {
  91.         for (int i = 0; i < list.size(); i++) {
  92.             System.out.println(list.get(i).getResult().toString());
  93.             }
  94.         }
  95.     }
  96.    
  97.     public boolean isEndOfQueue() {
  98.         synchronized(list) {
  99.             return this.list.getFirst().isDone();
  100.         }
  101.     }
  102. }
  103.  
  104.  
  105.  
  106. ЗАДАНИЕ:
  107.  
  108. import java.util.ArrayList;
  109.  
  110. public class MyTask {
  111.     private boolean done;
  112.     private int start;
  113.     private int end;
  114.     private ArrayList <Integer> answers;
  115.    
  116.     public MyTask(int start, int end) {
  117.         this.start = start;
  118.         this.end = end;
  119.         this.answers = new ArrayList<>();
  120.         this.setDone(false);
  121.     }
  122.    
  123.     public ArrayList<Integer> getResult() {
  124.         return answers;
  125.     }
  126.  
  127.     public boolean isDone() {
  128.         return done;
  129.     }
  130.  
  131.     public void setDone(boolean done) {
  132.         this.done = done;
  133.     }
  134.    
  135.     public int getStart() {
  136.         return this.start;
  137.     }
  138.     public int getEnd() {
  139.         return this.end;
  140.     }
  141.    
  142.     public void addAnswer(final int val) {
  143.         this.answers.add(val);
  144.     }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement