Las diferencias entre sincronizada Recogida y concurrente en Java Collection

class Colección Colección vs concurrente en Java : Aquí, vamos a conocer cuáles son las diferencias entre Synchronized Recogida y concurrente Collection en lenguaje de programación Java?

Synchronized Colección Colección vs concurrente en Java

Aquí, vamos a ver cómo difiere Synchronized Colección de Colección concurrente en Java?

Synchronized Colección

  • Ahora, vamos a ver lo que es sincronizar? Aquí, sincronizar medios sólo se permite un hilo para operar sobre un objeto a la vez o en otras palabras, el objeto (que es Synchronized) no se puede modificar de múltiples hilos simultáneamente.
  • synchronized Collection puede ser modificado por un hilo a la vez (es decir. Que no es posible modificar o acceso Synchronized Collection por múltiples hilos simultáneamente).
  • Synchronized Collection tiene un rendimiento bajo de Concurrent Collection porque a la vez se permite sólo un hilo para operar sobre un objeto por lo que aumenta el tiempo de espera de los hilos.
  • Synchronized Collection adquiere el bloqueo en todo el objeto Collection que proporciona hilos de seguridad.
  • SynchronizedMap es un Synchronized static interior de Colecciones class que está disponible en java.util.Collections.
  • En SynchronizedMap adquiere el bloqueo en toda objeto Map y se envuelve todos los métodos de Mapa class con interface palabra clave.
  • SynchronizedMap puede permitir claves y valores synchronized null dependen de la verdadera Colecciones null.

Ejemplo:

import java.util.*;
class SynchronizedCollectionClass {
public static void main(String[] args) {
try {
Set set = new HashSet();
set.add(10);
set.add(20);
set.add(30);
set.add(40);
set.add(50);
System.out.println("Current Set is :" + set);
Collection collection = Collections.synchronizedCollection(set);
System.out.println("Synchronized Collection is :" + set);
} catch (IndexOutOfBoundsException ex) {
System.out.println("Exception :" + ex.getMessage());
}
}
}

salida

E:Programs>javac SynchronizedCollectionClass.java
E:Programs>java SynchronizedCollectionClass
Current Set is :[50, 20, 40, 10, 30]
Synchronized Collection is :[50, 20, 40, 10, 30]

Aquí, vamos a ver cómo difiere concurrente Colección de class colección en Java?

concurrente Colección

  • Ahora, vamos a ver lo que es concurrente? Aquí, los medios concurrentes sólo múltiples hilos se les permite operar en un objeto a la vez o en otras palabras, el objeto (que es concurrente) se puede modificar de múltiples hilos simultáneamente.
  • concurrente Collection puede ser modificado por múltiples hilos a la vez (es decir. Que es posible modificar o acceso concurrente Collection por múltiples hilos simultáneamente).
  • concurrente Collection tiene un alto rendimiento de Synchronized Collection porque a la vez se permite múltiples hilos para funcionar sobre un objeto por lo que disminuye el tiempo de espera de los hilos.
  • más de un hilos pueden realizar operaciones de lectura y escritura al mismo tiempo que todavía proporciona Seguridad para subprocesos.
  • ConcurrentHashMap es un Synchronized introducido en Java 5 que está disponible en java.util class.
  • ConcurrentHashMap divide Mapa objeto en diferentes partes y cada hilo adquiere el bloqueo en cada parte.
  • Como sabemos el nivel de concurrencia package es 16 Eso significa un máximo de 16 hilos se les permite acceder a un objeto al mismo tiempo por default y que pueden aumentar el nivel y la disminución de concurrencia si queremos.
  • ConcurrentHashMap no permite claves y valores default null.

Ejemplo:

// We will see in a program why Concurrent concept is required
import java.util.*;
class ConcurrentClass extends Thread {
static LinkedList ll = new LinkedList();
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
System.out.println("ConcurrentClass" +
" will add element");
}
// By using add() method to add an element in Concurrent Class Thread
ll.add("Java");
}
public static void main(String[] args)
throws InterruptedException {
ll.add("C");
ll.add("C++");
ll.add("Ruby");
ll.add("Python");
// Creating an instance of ConcurrentClass and it will modify
ConcurrentClass cc = new ConcurrentClass();
cc.start();
// Iterating LinkedList
Iterator iterator = ll.iterator();
while (iterator.hasNext()) {
String str = (String) iterator.next();
System.out.println(str);
Thread.sleep(8000);
}
System.out.println(ll);
}
}

salida

E:Programs>javac ConcurrentClass.java
E:Programs>java ConcurrentClass
C
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification
(LinkedList.java:953)
at java.util.LinkedList$ListItr.next(LinkedList.java:886)
at ConcurrentClass.main(ConcurrentClass.java:34)


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *