Cuando se utiliza el patrón de diseño Singleton, hacer otros métodos necesitan utilizar la palabra clave sincronizada para garantizar la seguridad de rosca?

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 emailfunció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)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=206059&siteId=1
Recomendado
Clasificación