Foros del Web » Programación para mayores de 30 ;) » Java »

synchronized en metodos de instancia y clase

Estas en el tema de synchronized en metodos de instancia y clase en el foro de Java en Foros del Web. Hola a todos, yo de nuevo jeje. Estuve checando esta pagina http://epere4.blogspot.com/2008/04/c...d-en-java.html Me podrian aclarar unas dudas respecto a este texto y de lo que ...
  #1 (permalink)  
Antiguo 25/11/2011, 20:24
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
synchronized en metodos de instancia y clase

Hola a todos, yo de nuevo jeje.
Estuve checando esta pagina
http://epere4.blogspot.com/2008/04/c...d-en-java.html

Me podrian aclarar unas dudas respecto a este texto y de lo que saben?

metodos de instancia

public synchronized void metodo() {
// codigo del metodo aca}es lo mismo que
}

public void metodo() {
synchronized(this) {
// codigo del metodo aca
}}

me queda duda con el this, osea este amigo dice que los bloques synchronized lleban entre parentesis la referencia a un objeto, pero this sirve para hacer referncia a un objeto meramente no es la referencia a un objeto.

En este caso que pasa con this(como lo puedo asimilar en la ment), o es de esas "reglas" que se deben usarsei y no preguntar XD ?

En el caso de los metodos de clase si lo asimilo asi que pasare a lo siguiente.

Por lo que entiendo los threads y synchronized trabajan de esta manera->

funcion primero(){
bloque synchronized, su referencia de objeto es uno
}

funcion segundo(){
bloque synchronized, su referencia de objeto es dos
}

funcion tercero(){
bloque synchronized, su referencia de objeto es uno
}

thread1 ejecuta funcion primero(referencia de objeto uno)
En este caso ningun otro thread puede ejecutar un metodo que contenga un bloque synchronized y dicho bloque synchronized tenga una referencia a uno.

en este caso thread1 ejecuta funcion primero eso significa que ningun thread puede ejecutar a las funciones primero y tercero pero si cualquier otro thread puede ejecutar a la funcion segundo ya que su referencia de objeto es distinto.

Es asi como funciona?

y otra cosa
esto

Si hay dos bloques synchronized que hacen referencia a distintos objetos (por más que ambos utilicen el mismo nombre de variable), la ejecución de estos bloques no será mutuamente excluyente.

se refiere a lo que dije antes

thread1 ejecuta funcion primero(referencia de objeto uno)
En este caso ningun otro thread puede ejecutar un metodo que contenga un bloque synchronized y dicho bloque synchronized tenga una referencia a uno.

en este caso thread1 ejecuta funcion primero eso significa que ningun thread puede ejecutar a las funciones primero y tercero pero si cualquier otro thread puede ejecutar a la funcion segundo ya que su referencia de objeto es distinto.

espero me puedan ayudar.
  #2 (permalink)  
Antiguo 26/11/2011, 00:45
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: synchronized en metodos de instancia y clase

Querés entender el tema.. simple, andá a la fuente http://docs.oracle.com/javase/tutori.../syncmeth.html en vez de guiarte por un BLOGGERO que da su humilde opinión..

Un método synchro NO ES LO MISMO que un método que contiene un bloque synchro. Cuando termines de leer el link que te puse vas a entender el por qué y mucho mas.
__________________
BadProgrammerException!
  #3 (permalink)  
Antiguo 26/11/2011, 13:23
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: synchronized en metodos de instancia y clase

Ok gracias por la pagina.

Etiquetas: clase, instancia, metodos, synchronized
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:26.