Xun Yan:
Quiero asegurar que la clase siguiente es seguro para subprocesos, debería utilizar la palabra clave sincronizada para otros métodos? O utilizar una estructura de datos seguro para subprocesos para almacenar correo electrónico. ¿Qué tengo que hacer?
public class RecycleStation {
private static volatile RecycleStation uniqueInstance;
private static List<Email> recycleEmailList ;
private RecycleStation() {
recycleEmailList = new ArrayList<>();
}
public static RecycleStation getInstance() {
if (uniqueInstance == null) {
synchronized (RecycleStation.class) {
if (uniqueInstance == null) {
uniqueInstance = new RecycleStation();
}
}
}
return uniqueInstance;
}
public void RecycleEmail(Email email) {
recycleEmailList.add(email);
}
public void deleteEmail(Email email) {
recycleEmailList.remove(email);
}
public void clear() {
recycleEmailList.clear();
}
}
igorepst:
En primer lugar, un patrón Singleton es el más implementado como Enum en Java segundo lugar, cada email
función de manipulación ( clear
, Recycle
, delete
) deben estar sincronizados para garantizar la seguridad de rosca (el enlace se trata de una enumeración, pero la misma tiene sobre todos y cada aplicación Sinlgeton):
public synchronized void RecycleEmail(Email email)