elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Codigo en Java que no hace lo que deberia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Codigo en Java que no hace lo que deberia  (Leído 6,625 veces)
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Codigo en Java que no hace lo que deberia
« Respuesta #10 en: 26 Enero 2014, 16:08 pm »

 
//Supongamos que antes se ha declarado esto:
//Object cerrojo = new Object();

Código:
switch(tipoHilo){
        case 0:
         for(int i=0; i<nVueltas; i++)
         synchronized(cerrojo){ n=n+1;}; // <--- Cambio de cerrojo
         break;
        case 1:
         for(int i=0; i<nVueltas; i++){
         synchronized(cerrojo){n=n-1;}; // <--- Cambio de cerrojo
         break;
      }

Si dices eso, donde debo poner ese código?? según tu comentario antes del switch, porque no vas a declarar un atributo estático dentro de un método. Me dices que lo coloque antes del switch, posteo el codigo de como debe quedar segun usted y luego me dices que el codigo es mio y que es una bestia jejeje

Yo hasta ahora he tratado simular tu código porque nomas haz puesto código que no funcionan, malas indicaciones, o simplemente que funcionan pero estan mal hecho, y encima pones que mis codigo son bestiales y lo único que he hecho es seguir sus indicaciones para tratar de dar con el código que suyo que no funciona y que hasta ahora es que lo agrega al topic, para poder ver el problema y mirar que pasa... Pero el codigo malo que tienes me dices con son míos. Y en este punto es que haz puesto el código que deberías haber puesto al principio del hilo.

Men si eres tan buen programador, entonce hubieras arreglado y encontrado la razón porque pasa lo que pasa, ya que simplemente el error es básico.

Saludos y debuguea.


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
xoker

Desconectado Desconectado

Mensajes: 24



Ver Perfil WWW
Re: Codigo en Java que no hace lo que deberia
« Respuesta #11 en: 26 Enero 2014, 19:29 pm »


Si dices eso, donde debo poner ese código?? según tu comentario antes del switch, porque no vas a declarar un atributo estático dentro de un método. Me dices que lo coloque antes del switch, posteo el codigo de como debe quedar segun usted y luego me dices que el codigo es mio y que es una bestia jejeje

Yo hasta ahora he tratado simular tu código porque nomas haz puesto código que no funcionan, malas indicaciones, o simplemente que funcionan pero estan mal hecho, y encima pones que mis codigo son bestiales y lo único que he hecho es seguir sus indicaciones para tratar de dar con el código que suyo que no funciona y que hasta ahora es que lo agrega al topic, para poder ver el problema y mirar que pasa... Pero el codigo malo que tienes me dices con son míos. Y en este punto es que haz puesto el código que deberías haber puesto al principio del hilo.

Men si eres tan buen programador, entonce hubieras arreglado y encontrado la razón porque pasa lo que pasa, ya que simplemente el error es básico.

Saludos y debuguea.

Este es el ultimo mensaje que escribo en el hilo.

Desde el inicio el codigo que tengo en mi PC funciona perfectamente (al copiarlo me puse una llave de mas, error mio que ni siquiera sabia que habia puesto y que imagino que nadie se dio cuenta al principio hasta que lo mencionaste mas tarde), el unico problema que tiene el codigo es que cuando pongo un cerrojo de tipo Integer y lo uso, el cerrojo deja de hacer su funcion de cerrojo y deja pasar a todo el mundo. Si uso un cerrojo por ejemplo de tipo Object el codigo funciona perfectamente.

Mi duda es y siempre ha sido la siguiente: ¿Por que cuando uso un cerrojo de tipo Integer y lo uso como un entero el cerrojo deja de funcionar?

Nada mas y nada menos, creo que en el primer post y en los sucesivos lo he preguntado siempre...

Por ultimo solo decir, que dije que tus codigos eran bestialidades, por varias razones:

-Hacer un cerrojo No estatico no vale para nada.
-Declarar un cerrojo dentro de un metodo no vale para nada.
-Poner el synchronized que ocupa todo el switch deja sin paralelismo.
-Poner el synchronized que ocupa todo el for vuelve a dejar sin paralelismo.

Esto se estudia al comienzo en la universidad, lo se porque en segundo de carrera estoy cursando una asignatura sobre paralelismo y todos lo hacemos al principio... y con el tiempo, ves la burrada que significa.

Aun asi muchas gracias por haber tratado de ayudarme.

Un saludo.


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Codigo en Java que no hace lo que deberia
« Respuesta #12 en: 26 Enero 2014, 20:41 pm »


Desde el inicio el codigo que tengo en mi PC funciona perfectamente (al copiarlo me puse una llave de mas, error mio que ni siquiera sabia que habia puesto y que imagino que nadie se dio cuenta al principio hasta que lo mencionaste mas tarde)


Como voy a adivinar el codigo que tiene errores logico si lo pegas mal... Sigo las indicaciones que me das para saber como tienes el codigo, la das mal y luego dices que es mi código  :rolleyes:


Esto se estudia al comienzo en la universidad, lo se porque en segundo de carrera estoy cursando una asignatura sobre paralelismo y todos lo hacemos al principio... y con el tiempo, ves la burrada que significa.

Brother, tengo mas de 4 años programando, tengo la certificación de OCPJP (Oracle Certified Professional, Java Programmer), voy a tomar muy pronto si dios quiere la certificación OCPJBCD (Oracle Certified Expert, Java EE 6 Enterprise JavaBeans Developer), trabajo como Java EE Developer & PHP Developer, y me vas a salir con eso de la universidad...

Si comienzas a depurar el codigo, observas como se comporta sabrás todas las respuesta a tus preguntas. Pero todavía no entiendo porque no lo haz hecho

Saludos.
« Última modificación: 26 Enero 2014, 20:43 pm por ~ Yoya ~ » En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
lnvisible


Desconectado Desconectado

Mensajes: 527



Ver Perfil
Re: Codigo en Java que no hace lo que deberia
« Respuesta #13 en: 27 Enero 2014, 16:01 pm »

@Yoya Es tontería usar el depurador con código concurrente porque las condiciones de carrera no se van a dar cuando estás usando el depurador.

@xoker Mi código ejecuta en paralelo, no secuencialmente. Míralo otra vez si lo necesitas.

Estás usando synchronized mal, y el depurador no te lo va a decir. Si miras la documentación verás que el mutex a especificar es "this" o la clase para los métodos estáticos: http://tutorials.jenkov.com/java-concurrency/synchronized.html#synchronized-blocks-instance-methods
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
QUE HACE ESTE CODIGO??
Ingeniería Inversa
mauriporto 6 2,962 Último mensaje 17 Junio 2007, 10:25 am
por karmany
codigo no imprime como deberia, ayuda!
Programación C/C++
balanis 3 2,077 Último mensaje 17 Abril 2012, 18:42 pm
por balanis
Que hace el siguiente codigo bat?
Scripting
lucas25cba 3 3,729 Último mensaje 26 Septiembre 2012, 06:41 am
por dac
como se hace esto en java
Java
daniel.p 2 1,979 Último mensaje 1 Octubre 2012, 21:33 pm
por elkiy
mi dll hace lo contrario de lo que debería hacer
Programación C/C++
Borito30 3 1,638 Último mensaje 20 Marzo 2017, 13:06 pm
por Borito30
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines