Sincronizar el acceso a HashMap desde dos subprocesos en java

Tengo dos hilos de ejecución (uno es el hilo principal (Say Thread1 ) y otro es el hilo de fondo (por ejemplo, Thread2 )). Puedo tener acceso a la variable hashMap de HashMap de Thread1 y Thread2 . Thread1 modifica el hashMap y Thread2 lee el HashMap.

En el código Thread1 será:

 synchronized(hashMap){ //updating hashMap } 

En el código de Thread2 será:

 synchronized(hashMap){ //reading hashMap } 

¿Puedo sincronizar el acceso a hashMap usando synchronized block de esta manera?

Sí. Pero también puedes usar el método de utilidad Collections.synchronizedMap para hacer un thread hashmap seguro:

 Map yourMap = new HashMap(); Map synchronizedMap = java.util.Collections.synchronizedMap(yourMap); 

O puede utilizar ConcurrentHashMap o Hashtable que son thread-safe de forma predeterminada.

Yo usaría ReadWriteLock

 ReadWriteLock rwl = new ReentrantReadWriteLock(); void read() { rwl.readLock().lock(); try { ... read } finally { rwl.readLock().unlock(); } } void write() { rwl.writeLock().lock(); try { ... write } finally { rwl.writeLock().unlock(); } } 

Debe intentar usar HashTable o ConcurrentHashMap . Ambas clases están sincronizadas para que usted no tenga que lidiar con usted mismo. Y no creo que se puede utilizar la palabra clave synchronized directamente en un objeto específico. Se utiliza normalmente con .class o this , es decir, el tipo de clase.

  • Cómo tener múltiples conexiones a un solo dispositivo bluetooth Obd2 conectado al coche
  • Espere a que los hilos se completen antes de continuar
  • ¿Cómo funciona maximumPoolSize de ThreadPoolExecutor?
  • Valor devuelto del hilo
  • Cómo comprobar si un hilo de Android está en ejecución
  • ¿Cómo termino HandlerThreads?
  • ¿Cómo evitar la espera en el hilo principal cuando se añaden los encabezados a las solicitudes de retrofit?
  • Android: AsyncTask OR normal Java threads con ExecutorService
  • Cómo setText de un hilo independiente en Android
  • Configuración de un Runner de Java Thread después de la construcción
  • ¿Cuándo necesitamos usar runOnUiThread en la aplicación android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.