Sie können ein Objekt nicht "null" machen. Wenn ein Thread über eine Variable auf ein Objekt zugreift und ein anderer Thread dann diese Variable auf null setzt, hat der erste Thread immer noch den Verweis auf dieses Objekt und kann darauf zugreifen. Wenn der zweite Thread zuerst ausgeführt wird, d. H. Die Variable auf null setzt, kann der erste Thread diesen Verweis nicht an erster Stelle erhalten.
Beispiel:
MyThreadsafeObject ref = new MyThreadsafeObject();
//start another thread and pass in the reference
new Thread(new MTOHandler(ref)).start();
ref = null;
//start a 3rd thread and pass in the now-null reference
new Thread(new MTOHandler(ref)).start();
Hier ist der erste Thread, der gestartet wird, kann immer noch das Objekt verwenden, das vergangen ist, während der zweite Thread kann nicht, wie es ist, eine Null-Referenz zu bekommen.
Wenn Sie mit Ihrer Frage so etwas wie synchronized(ref) { ... }
meinen, dann könnten Sie auf dem Objekt synchronisieren, solange ref
nicht Null ist, wenn Sie den Block starten.
Objekte sind nicht null. Referenzen sind null. Unklar, was du verlangst. – EJP