Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

java visenitno programiranje + semafori + filozofi

[es] :: Java :: java visenitno programiranje + semafori + filozofi

[ Pregleda: 2101 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

masterBG
Beograd

Član broj: 294554
Poruke: 15
*.dynamic.sbb.rs.



+3 Profil

icon java visenitno programiranje + semafori + filozofi27.12.2011. u 00:57 - pre 149 meseci
Pozdrav, prilikom kreiranja niti, ta nit dobije neki id, kojim ona treba da pozove clana niza semaphora semaphore[id].acquire(); medjutim prilikom sledecih kreiranjan niti ta promenljiva id se promeni u vrednost sledecih niti, pa prilikom poziva semaphore[id].release(); prijavljuje NullPointerException. Molim za pomoc... kako da svaka nit ima svoj id cija vrednost ja dodeljujem?
 
Odgovor na temu

sanchi
Sanja Jokic
Beograd

Član broj: 148256
Poruke: 104
*.dynamic.sbb.rs.



+8 Profil

icon Re: java visenitno programiranje + semafori + filozofi27.12.2011. u 01:07 - pre 149 meseci
A da okacis neko parce koda pa da vidimo gde gresis?
If people were meant to pop out of beds we would all sleep in toasters.
Google is your friend http://justfuckinggoogleit.com/
 
Odgovor na temu

masterBG
Beograd

Član broj: 294554
Poruke: 15
*.dynamic.sbb.rs.



+3 Profil

icon Re: java visenitno programiranje + semafori + filozofi27.12.2011. u 01:09 - pre 149 meseci
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);
        }
    }
 
Odgovor na temu

sanchi
Sanja Jokic
Beograd

Član broj: 148256
Poruke: 104
*.dynamic.sbb.rs.



+8 Profil

icon Re: java visenitno programiranje + semafori + filozofi27.12.2011. u 01:26 - pre 149 meseci
Nece ici ovako... imas PP.
If people were meant to pop out of beds we would all sleep in toasters.
Google is your friend http://justfuckinggoogleit.com/
 
Odgovor na temu

masterBG
Beograd

Član broj: 294554
Poruke: 15
*.dynamic.sbb.rs.



+3 Profil

icon Re: java visenitno programiranje + semafori + filozofi29.12.2011. u 14:43 - pre 149 meseci
Resio sam problem. Sanja hvala ti puno! Jedno pitanje povezano sa semaforima. Da li neko ko se profesionalno bavi prograamirannjem moze da mi kaze koliko im su im zaista potrebni semaphori, lock-ovi, wait/notify, odnosno sta najvise koriste?
 
Odgovor na temu

[es] :: Java :: java visenitno programiranje + semafori + filozofi

[ Pregleda: 2101 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.