Wenn eine Seiten- oder Komponentenklasse ein Instanzfeld hat, das ein nicht synchronisiertes Objekt ist, z. ein ArrayList
, und die Anwendung hat Code, der dieses Feld strukturell ändert, sollte der Zugriff auf dieses Feld synchronisiert werden?Sollen Instanzfelder auf einer Tapestry-Seite oder -Komponente synchronisiert werden?
f.ex .:
public class MyPageOrComponent
{
@Persist
private List<String> myList;
void setupRender()
{
if (this.myList == null)
{
this.myList = new ArrayList<>();
}
}
void afterRender(MarkupWriter writer)
{
// Should this be synchronized ?
if (someCondition)
{
this.myList.add(something);
}
else
{
this.myList.remove(something);
}
}
}
Ich frage, weil ich zu verstehen scheinen, dass Tapestry nur eine Instanz einer Seite oder eines Komponentenklasse erstellt und verwendet diese Instanz für alle angeschlossenen Clients (aber bitte korrigiere mich, wenn das nicht stimmt).