je la méthode suivante dans un objet singleton qui a été exécuté dans un environnement multithread (Play 2 Java
, MySQL
, Hibernate
):Java Hibernate multithread
@Transactional
void deleteItem(int itemId, int userId) {
.....
synchronized(this) {
if(getItemCount(userId) < 2) { // go to database to get the count
return;
}
if(!userOwnItem(itemId, userId) { // check if item belongs to user
return;
}
delete(itemId); // go to db to delete the item
}
....
}
J'ai du mal à comprendre pourquoi parfois il passe en dessous de 1 lorsque courir simultanément.
Il s'agit en fait d'une méthode d'un objet singleton. désolé je ne l'ai pas mentionné – user2934804