Skip to content
Snippets Groups Projects
Commit 8d2971c6 authored by Miska Sulander's avatar Miska Sulander
Browse files

created MyThread-class

parent 6c94e2d9
No related branches found
No related tags found
No related merge requests found
File added
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 MyThread extends Thread {
private Mediator mediator;
private BlockingQueue<Work> workList;
private ControlSet control;
public MyThread(Mediator mediator, ControlSet control) {
this.mediator = mediator;
this.control = control;
}
public void run() {
mediator.registerThread(this.hashCode(), "Thread");
mediator.setRunStatus("Created", this.hashCode());
mediator.setRunStatus("Running", this.hashCode());
int count = control.getBlockSize();
while (!((workList = mediator.getWorkSlice(control.getBlockSize())).isEmpty())) {
workList = mediator.getWorkSlice(count); //get count amount of works from work queue
for( Work item : workList) {
mediator.setWorkStatus("Calculating", item);
item.work();
mediator.setWorkStatus("Done", item);
mediator.increaseCalculated(this.hashCode());
}
}
mediator.setRunStatus("Ended", this.hashCode());
}
}
package fi.utu.tech.threadrunner2.assignment;
import java.util.concurrent.BlockingQueue;
import java.util.ArrayList;
import fi.utu.tech.threadrunner2.mediator.ControlSet;
import fi.utu.tech.threadrunner2.mediator.Mediator;
import fi.utu.tech.threadrunner2.works.Work;
public class Task1UsingThreadDistributor extends Thread implements Distributor {
public class Task1UsingThreadDistributor implements Distributor {
private Mediator mediator;
private BlockingQueue<Work> workList;
private ControlSet control;
public Task1UsingThreadDistributor(Mediator mediator, ControlSet control) {
this.mediator = mediator;
this.control = control;
for (int i = 0 ; i < control.getThreadCount() ; ++i) { //get number of threads from UI and create threads
mediator.registerThread(this.hashCode(), "Thread");
}
}
public void execute() {
this.start();
mediator.setRunStatus("Created", this.hashCode());
}
public void run() {//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());
Thread threads[] = new Thread[control.getThreadCount()];
for (int i = 0 ; i < control.getThreadCount() ; ++i) { //get number of threads from UI and create threads
threads[i] = new MyThread(mediator, control);
threads[i].start();
}
mediator.setRunStatus("Ended", this.hashCode());
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment