Red de conocimiento informático - Problemas con los teléfonos móviles - putIfAbsent se puede utilizar de forma flexible

putIfAbsent se puede utilizar de forma flexible

Escenarios de aplicación

El mismo usuario solo puede acceder al mismo método una vez y solo después de que el método haya terminado de ejecutarse.

Pero si hay varias máquinas, este método no es adecuado. Se deben utilizar bloqueos distribuidos, como zookeeper.

La clase de prueba es la siguiente:

importar org.apache.commons.lang3.RandomStringUtils;

importar java.util.concurrent.ConcurrentHashMap;

importar java.util.concurrent.CountDownLatch;

/**

* Creado por cailu el 6/6/2018.

*/

prueba de clase pública{

caché ConcurrentHashMap final estática pública = new ConcurrentHashMap();

principal vacía estática pública ( String[] args) lanza InterruptedException {

CountDownLatch start = new CountDownLatch(1);

CountDownLatch stop = new CountDownLatch(10);

for (int i = 0; i < 10; i++) {

RunThread runThread = new RunThread(RandomStringUtils.random(1, "ABC"), iniciar, detener);

Hilo de rosca = nuevo hilo(runThread);

thread.start();

}

start.countDown();

stop.await ();

System.out.printn("Todo en ejecución");