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.