class Task{
int completionRate=0;
boolean isReady=false;
public synchronized boolean isReady(){
if(completionRate>75){return true;}
return false;
}
public synchronized void increaseCompletionRate(){
completionRate =25;
}
public synchronized void decreaseCompletionRate(){
completionRate-=25;
}
}
class Person
{
final String name;
Person(String name){
this.name=name;
}
public String getName(){return name;}
public void increaseFrustrationLevel(){}
}
class WorkerTask extends Thread{
final Person person;
final Task task;
final OpenOffice office;
WorkerTask(Person person,Task task, OpenOffice office){
super(person.getName());
this.person=person;
this.task=task;
this.office=office;
}
public Task getTask(){return task;}
void workOnTask(Task task){
System.out.println("Workin on task..." task.completionRate);
task.increaseCompletionRate();
}
public void run(){
while(!task.isReady()){
try{
sleep(1000);
workOnTask(task);
sleep(1000);
}
catch(InterruptedException interrupted){
System.out.println("INTERRUPTED");
task.decreaseCompletionRate();
person.increaseFrustrationLevel();
WorkerTask other=new WorkerTask(person,task,office);
other.start();
office.generateDistraction(other);
}
}
}
}
public class OpenOffice{
public static void main(String...args){
OpenOffice office=new OpenOffice();
WorkerTask task=new WorkerTask(new Person("jaska"),new Task(),office);
task.start();
office.generateDistraction(task);
}
public void generateDistraction(WorkerTask task){
task.interrupt();
}
}
int completionRate=0;
boolean isReady=false;
public synchronized boolean isReady(){
if(completionRate>75){return true;}
return false;
}
public synchronized void increaseCompletionRate(){
completionRate =25;
}
public synchronized void decreaseCompletionRate(){
completionRate-=25;
}
}
class Person
{
final String name;
Person(String name){
this.name=name;
}
public String getName(){return name;}
public void increaseFrustrationLevel(){}
}
class WorkerTask extends Thread{
final Person person;
final Task task;
final OpenOffice office;
WorkerTask(Person person,Task task, OpenOffice office){
super(person.getName());
this.person=person;
this.task=task;
this.office=office;
}
public Task getTask(){return task;}
void workOnTask(Task task){
System.out.println("Workin on task..." task.completionRate);
task.increaseCompletionRate();
}
public void run(){
while(!task.isReady()){
try{
sleep(1000);
workOnTask(task);
sleep(1000);
}
catch(InterruptedException interrupted){
System.out.println("INTERRUPTED");
task.decreaseCompletionRate();
person.increaseFrustrationLevel();
WorkerTask other=new WorkerTask(person,task,office);
other.start();
office.generateDistraction(other);
}
}
}
}
public class OpenOffice{
public static void main(String...args){
OpenOffice office=new OpenOffice();
WorkerTask task=new WorkerTask(new Person("jaska"),new Task(),office);
task.start();
office.generateDistraction(task);
}
public void generateDistraction(WorkerTask task){
task.interrupt();
}
}
Vastaukset
Vanhimmat
Ei vielä vastauksia
Aloittaja odottaa vastauksia. Kerro oma näkemyksesi ensimmäisenä.