diff --git a/src/main/java/fi/utu/tech/threadrunner2/assignment/Task1UsingThreadDistributor.java b/src/main/java/fi/utu/tech/threadrunner2/assignment/Task1UsingThreadDistributor.java index d84c85f9adbdd841527600f7011df0a313ad7362..cca909344f76ab7841cd5feb650f33c8c1821571 100644 --- a/src/main/java/fi/utu/tech/threadrunner2/assignment/Task1UsingThreadDistributor.java +++ b/src/main/java/fi/utu/tech/threadrunner2/assignment/Task1UsingThreadDistributor.java @@ -2,15 +2,36 @@ package fi.utu.tech.threadrunner2.assignment; import fi.utu.tech.threadrunner2.mediator.ControlSet; import fi.utu.tech.threadrunner2.mediator.Mediator; - -public class Task1UsingThreadDistributor implements Distributor { - - public Task1UsingThreadDistributor(Mediator mediator, ControlSet control) { +import fi.utu.tech.threadrunner2.works.Work; +import java.util.concurrent.BlockingQueue; +public class Task1UsingThreadDistributor extends Thread implements Distributor { + + private Mediator mediator; + private BlockingQueue<Work> workList; + private ControlSet control; + public Task1UsingThreadDistributor(Mediator mediator, ControlSet control) { + this.mediator = mediator; + this.control = control; + mediator.registerThread(this.hashCode(), "Thread"); } public void execute() { - + this.start(); + mediator.setRunStatus("Created", this.hashCode()); + } + public void run() { + //mediator.registerThread(this.hashCode(), "Jotain1"); + mediator.setRunStatus("Running", this.hashCode()); + int maara = control.getBlockSize(); + workList = mediator.getWorkSlice(maara); //antaa listasta yhden työn. Tämä täytyy antaa tehtäväksi jollekin! + for( Work item : workList) { + mediator.setWorkStatus("Calculating", item); + item.work(); + mediator.setWorkStatus("Done", item); + mediator.increaseCalculated(this.hashCode()); + } + mediator.setRunStatus("Ended", this.hashCode()); } }