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?