Skip to content
Snippets Groups Projects
Commit e6177273 authored by nuklin's avatar nuklin
Browse files

Säieluokkia

parent 2dee7ee2
No related branches found
No related tags found
No related merge requests found
package fi.utu.tech.threadrunner2.assignment;
import java.util.concurrent.BlockingQueue;
import fi.utu.tech.threadrunner2.mediator.ControlSet;
import fi.utu.tech.threadrunner2.mediator.Mediator;
import fi.utu.tech.threadrunner2.works.Work;
public class Driver extends Task1UsingThreadDistributor implements Runnable {
private Mediator mediator;
private Thread[] saikeet;
private BlockingQueue<Work> workList;
private ControlSet control;
public Driver(Thread[] saikeet, ControlSet control, Mediator mediator, BlockingQueue<Work> workList) {
this.saikeet=saikeet;
this.control=control;
this.mediator=mediator;
this.workList=workList;
for(Thread saie : saikeet) {
mediator.registerThread(saie.hashCode(), "Thread");
}
}
public void aja() {
int maara= control.getBlockSize();
int x=0;
for(Thread saie : saikeet) {
mediator.setRunStatus("Running", saie.hashCode());
for( Work item : mediator.getWorkSlice(maara)) {
mediator.setWorkStatus("Calculating", item);
item.work();
mediator.setWorkStatus("Done", item);
mediator.increaseCalculated(saie.hashCode());
}
}
}
public void laske() {//pystyttäisiinkö vaan while notifyAll metodeilla
//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());
}
public void cordinate() {
int myPriority= myThread.getPriority();//Joku mättää
for(Thread saie : saikeet) {
saie.setPriority(myPriority-1);
}
while((!((workList = mediator.getWorkSlice(control.getBlockSize())).isEmpty()))) {
for(Thread saie : saikeet) {
saie.laske();
}
sleep(100);
}
}
}
package fi.utu.tech.threadrunner2.assignment;
import java.util.concurrent.BlockingQueue;
import fi.utu.tech.threadrunner2.mediator.ControlSet;
import fi.utu.tech.threadrunner2.mediator.Mediator;
import fi.utu.tech.threadrunner2.works.Work;
public class Saie extends Thread implements Runnable,Distributor {
private Mediator mediator;
private Thread[] saikeet;
private BlockingQueue<Work> workList;
private ControlSet control;
private Integer hash;
public Saie(Mediator mediator, ControlSet control) {//konstruktori
this.mediator=mediator;
this.control=control;
}
public void execute() {
this.start();
}
public void run() {//Tarvitaan tehtävät työt listassa ja
for(Work item : mediator.getWorkSlice(control.getBlockSize())) {
mediator.setWorkStatus("Running", item);
item.work();
mediator.setWorkStatus("Done", item);
mediator.increaseCalculated(this.hashCode());
}
}
public Integer annaHash() {
return this.hashCode();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment