Witam, mam pytanie co do sposobu przekazywania Semaphore'ów do innej klasy. Wyczytałem, że w Javie podczas przypisania tak naprawde przypisuje sie kopie obiektu(np dla int a oraz int b a=b po edycji a, b sie nie zmienia). W mojej ocenie w tym kodzie w obiektach d1, d2, d3 znajduja sie rewferencje do tego samego semaforu
Semaphore s=new Semaphore(1);
Semaphore s2=new Semaphore(1);
Dd d1=new Dd();
Dd d2=new Dd();
Dd d3=new Dd();
d1.x="AAAAAAA";d2.x="BBBB";d3.x="CCCC";
d1.czas=1000;d2.czas=1000;d3.czas=100;
d1.s=s;d2.s=s;d3.s=s;
d1.start();d2.start();d3.start();
public class Dd extends Thread{
public String x;
public Semaphore s;
public int czas;
@Override
public void run(){
while(true){
try {
s.acquireUninterruptibly();
System.out.println(x);
sleep(czas);
s.release();
} catch (InterruptedException ex) {
Logger.getLogger(Dd.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
czy mam racje?