Ich habe eine Methode:synchronisierte Methode Zugriff von anderen Objekten JAVA
private synchronized Long generateID (Short company) throws Exception {
IDDAO iDDAO = SpringApplicationContext.getBean (IDDAO.class);
ID iD = iDDAO.findByNaturalKey (new IDNatKey (company);
if (iD != null) {
// Check if ID has reached limit, then reset the ID to the first ID
if (iD.getLatestIDno().longValue() == iD.getLastIDno().longValue()) {
iD.setLatestIDno (iD.getFrstIDno());
}
// Get next ID
iD.setLatestIDno (iD.getLatestIDno() + 1);
// update database with latest id
iDDAO.update (iD);
return iD.getLatestIDno();
}
}
In diesem Code Ich iD.setLatestIDno(iD.getLatestIDno() + 1)
den Wert der ID zu aktualisieren. Dies geschieht in einer synchronisierten Weise, so dass es niemals dupliziert wird, wenn von mehreren Threads aus zugegriffen wird.
Meine Frage ist, wenn diese Methode synchronisiert wird verhindert, dass andere Threads darauf zugreifen? Oder können andere Threads von verschiedenen Objekten darauf zugreifen? Soll es also statisch gemacht werden?
Der Code wie folgt verwendet wird
Long check = generateID (123);
Dank
Kann mir jemand bitte zeigen, wie incrementAndGet() von Atomic verwenden, indem Sie meinen Code Bearbeitung ? – Aiden