Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2010, 15:09
Synchronize
 
Fecha de Ingreso: agosto-2010
Mensajes: 1
Antigüedad: 14 años, 6 meses
Puntos: 0
Synchronized duda!!!

tengo una duda con la sincronizacion. aqui tengo una pregunta de un examen test y no estoy seguro de cual es la respuesta porque no tengo experiencia aun aver si alguien me echa una mano!!

dado el siguiente servidor
Código:
public class Servidor extends IServidor implements UnicastRemoteObject {
	HashMap<String, Integer> productosOrdenados;
		public Servidor(){
		...Constructor...
		}
	public insert(String ordenID){
		...
	}
}
cual de las siguientes llamadas del cliente al metodo insert es correcta¿?¿?¿?
Código:
1. public insert(String ordenID){
	synchronized(productosOrdenados) {
		if(productosOrdenados.contains(ordenId)){
			productosOrdenados.put(ordenID, productosOrdenados.get(ordenId)++);
		} else {
			productosOrdenados.put(ordenID, 1);
		}
	}
}
______________________________-
2.	 Ninguna de las otras opciones
________________________________-
3. public insert(String ordenID){
	synchronized(this) {
		if(productosOrdenados.contains(ordenId)){
			int val = productosOrdenados.get(ordenId);
			productosOrdenados.put(ordenID, ++val);
		} else {
			productosOrdenados.put(ordenID, 1);
		}
	}
}
___________________________-
4. public insert(String ordenID){
	if(productosOrdenados.contains(ordenId)){
		synchronized(productosOrdenados) {
			productosOrdenados.put(ordenID, productosOrdenados.get(ordenId)++);
	}
	} else {
		synchronized(productosOrdenados) {
			productosOrdenados.put(ordenID, 1);
			}
		}
	}
}
yo creo que la respuesta incorrecta es la 2 porque las llamadas me parece que hacen buen uso del synchronized.
que pensais vosotros???