Evo ga...
EDIT: Dobro je da ima nekoga, patim se sa ovim, a imam kolokvijum sutra iz ovog...
EDIT2:Nisam se tek sad setio da ucim, nego sam se tek sad setio da mogu ovde da pitam. Jos mi nije uslo u navika da postoji i ovaj forum...
Code:
private class filozofiR extends SimulationThread {
public filozofiR(int id) {
super(TEXT_FILOZOF + " " + id, BOJA_FILOZOF);
setContainer(obradjujeFilozof);
idF=id;
}
/*
* radiNestoDrugo();
synchronized (lock) {
while (brFilozofa > 0) {
try {
lock.wait();
} catch (InterruptedException e) {
// Za sada smemo ignorisati
}
}
brFilozofa++;
}
jede();
synchronized (lock) {
brFilozofa--;
if (brFilozofa == 0) {
lock.notify();
}
}
*
* */
@Override
protected synchronized void step() {
System.out.println("jjj "+Thread.currentThread().getId());
System.out.println("radi "+idF);
int id=idF;
System.out.println("radi2 "+id);
while(true){
System.out.println("radi3 "+id);
radiNestoDrugo();
System.out.println("radi4 "+id);
takeForks(idF);
System.out.println("radi5 "+id);
jede();
putForks(id);
}
}
public void test(int i){
System.out.println("radiT "+i);
int id=i;
System.out.println("radiT "+id);
System.out.println("nizStanja : "+nizStanja[id]);
System.out.println("radiT "+id);
int l,d;
if(id>0){
l=id-1;
}else{
l=4;
}
if(id==4){
d=0;
}else{
d=id+1;
}
System.out.println("radiT "+id);
System.out.println("t : "+id);
if((nizStanja[id]==HUNGRY)&&(nizStanja[l]!=EAT)&&(nizStanja[d]!=EAT)){
Thread.currentThread().getId();
System.out.println("t : "+id);
nizStanja[id]=EAT;
System.out.println("radiT "+id);
System.out.println("nizStanja : "+nizStanja[id]);
System.out.println("jjj "+Thread.currentThread().getId());
//nizS[id].release();
System.out.println("nizStanja : "+nizStanja[id]);
}
}
public void takeForks(int i){
try {
int id=i;
mutex.acquire();
System.out.println(id);
nizStanja[id]=HUNGRY;
System.out.println(id);
test(id);
System.out.println(id);
mutex.release();
System.out.println(id);
//nizS[id].acquire();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void putForks(int i){
try {
mutex.acquire();
System.out.println("ffffffffffff");
nizStanja[i]=THINKING;
int l,d;
if(i>0){
l=i-1;
}else{
l=4;
}
if(i==4){
d=0;
}else{
d=i+1;
}
test(l);
test(d);
mutex.release();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void jede() {
setContainer(pristupBaza);
setText(TEXT_JEDE);
work(1000, 2 * 1000);
setText(TEXT_PROCITAO);
setContainer(obradjujeFilozof);
}
private void radiNestoDrugo() {
setContainer(obradjujeFilozof);
setText(TEXT_OBRADJUJE);
work(DUZINA_OBRADE, 2 * DUZINA_OBRADE);
setText(TEXT_OBRADIO);
}
}