Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- МЭЙН:
- public class Main {
- private static Thread[] tPool;
- static TaskQueue tq;
- public static void main(String[] args) throws InterruptedException {
- tq = new TaskQueue();
- tq.push(new MyTask(1,50));
- tq.push(new MyTask(5,30));
- tq.push(new MyTask(1,4));
- tq.push(new MyTask(2,15));
- tq.push(new MyTask(1,50));
- tq.push(new MyTask(5,30));
- tq.push(new MyTask(1,4));
- tq.push(new MyTask(2,15));
- tPool = new Thread[2];
- for (int i=0; i < 2; i++) {
- tPool[i] = new Thread(){
- @Override
- public void run() {
- MyTask task;
- while(!tq.isEndOfQueue()) {
- synchronized(tq) {
- if((task = tq.pop()) != null){
- for(int i = task.getStart(); i <= task.getEnd(); i++)
- if(isSimple(i))
- task.addAnswer(i);
- task.setDone(true);
- tq.push(task);
- }
- }
- }
- }
- };
- tPool[i].start();
- tPool[i].join();
- }
- tq.showResult();
- }
- public static boolean isSimple(final int n) {
- for(int i=2;i<=Math.sqrt(n);i++)
- if(n%i==0)
- return false;
- return true;
- }
- }
- ОЧЕРЕДЬ:
- import java.util.LinkedList;
- public class TaskQueue {
- private LinkedList<MyTask> list;
- public TaskQueue() {
- list = new LinkedList<>();
- }
- public MyTask pop() {
- synchronized(list) {
- if(!list.getFirst().isDone())
- return list.removeFirst();
- return null;
- }
- }
- public void push(MyTask task) {
- synchronized(list) {
- list.addLast(task);
- }
- }
- public void showResult() {
- synchronized(list) {
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i).getResult().toString());
- }
- }
- }
- public boolean isEndOfQueue() {
- synchronized(list) {
- return this.list.getFirst().isDone();
- }
- }
- }
- ЗАДАНИЕ:
- import java.util.ArrayList;
- public class MyTask {
- private boolean done;
- private int start;
- private int end;
- private ArrayList <Integer> answers;
- public MyTask(int start, int end) {
- this.start = start;
- this.end = end;
- this.answers = new ArrayList<>();
- this.setDone(false);
- }
- public ArrayList<Integer> getResult() {
- return answers;
- }
- public boolean isDone() {
- return done;
- }
- public void setDone(boolean done) {
- this.done = done;
- }
- public int getStart() {
- return this.start;
- }
- public int getEnd() {
- return this.end;
- }
- public void addAnswer(final int val) {
- this.answers.add(val);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement