A fechadura dupla é segura?
Em engenharia de software, o bloqueio de dupla verificação (também conhecido como "otimização de bloqueio de dupla verificação") é um padrão de design de software usado para reduzir a sobrecarga de adquirir um bloqueio testando o critério de bloqueio (a "indicação de bloqueio") antes de adquirir o bloqueio. O bloqueio ocorre apenas se a verificação do critério de bloqueio indicar que o bloqueio é necessário. O padrão, quando implementado em algumas combinações de linguagem / hardware, pode ser inseguro. Às vezes, pode ser considerado um anti-padrão. Ele é tipicamente usado para reduzir a sobrecarga de bloqueio ao implementar "inicialização preguiçosa" em um ambiente multi-thread, especialmente como parte do padrão Singleton. A inicialização preguiçosa evita inicializar um valor até a primeira vez que ele é acessado.
O bloqueio com dupla verificação pode ser inseguro em algumas situações e às vezes é considerado um anti-padrão.