Ich habe ein Szenario, hat ziemlich viel gesucht, aber keine befriedigende Antwort bekommen.Java-Methoden thread sicher
Es gibt eine Service-Klasse ist, WebserviceInvokerService,
class WebserviceInvokerService {
@Override
public void synchronized callBackFun() {...}
}
callBackFun ==> ist die Funktion, die aufgerufen wird, wenn ein Ereignis (ein Ereignis) auftritt.
In callBackFun Ich DB überprüfen und entsprechend einen Service-Aufruf (keine Instanz Mitglieder der Klasse sind in diesem Geschäft beteiligt).
Ich habe CallBackFun synchronisiert. Es besteht die Möglichkeit, dass mehrere Instanzen von WebserviceInvokerService erstellt werden und CallBackFun für diese Objekte aufgerufen wird.
Ich möchte CallBackFun "synchron" über die Objekte aufgerufen werden. Also wird das "Synchronisieren" für CallBackFun in einem solchen Szenario Sinn machen.
Sie müssen synchronisieren, wenn der veränderbare Status eines Objekts von zwei oder mehr Threads geteilt wird. Da Sie uns nicht gezeigt oder uns von dem Zustand erzählt haben, den Sie schützen möchten, ist es nicht möglich, Ihre Frage zu beantworten. – scottb
Wenn Sie über Objekte hinweg synchronisieren möchten, sollten Sie synchronisierte (WebserviceInvokerService.class) {...} in der CallBackFun-Methode verwenden – Paulo
Es klingt ein bisschen wie Sie hinzufügen "synchronisiert" ohne wirklich zu verstehen, warum. Was ist der änderbare Zustand, in dem sich die Methode ändert, sodass sie Thread-unsicher wird? – Kayaman