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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
211  Programación / Java / Re: [Threads] wait() y notify() en: 20 Junio 2011, 03:19 am
Heredo de Thread e implemento Runnable para no instanciar Thread y pasarle la instancia de la subclase de Runnable como argumento, no se como hacerlo de otra forma xD

Pues heredas de Thread directamente, implementas el método
Código
  1. public void run()
y luego creas un objeto de tu clase y se lo asignas a un Thread. Por ejemplo imaginate que creas esta clase:

Código
  1. public class HiloSumador extends Thread{
  2.        private String identificador;
  3.        private int cantidad;
  4.  
  5.        public HiloSumador(String id){
  6.                identificador = id;
  7.                cantidad = 0;
  8.        }
  9.  
  10.        public void run(){
  11.                for(int i = 0;i<20;i++)
  12.                        cantidad++;
  13.                System.out.println("La suma es: "+cantidad);
  14.        }
  15.  
  16.        public static void main(String[] args){
  17.                Thread hilo1 = new HiloSumador("Hilo1");
  18.                hilo1.start();
  19.        }
  20.  
  21. }

A la hora de crear los objetos lo haces así:

Thread hilo1 = new HiloSumador("Hilo1");

y con eso ya lo tienes hecho.

pero lo que no entendi fue lo de los cerrojos xD

"Cerrojo" es un poco la terminología, con eso lo que se quiere decir es que ese objeto actúa como si fuese una cerradura, solo deja pasar a un hilo al mismo tiempo.

Espero te sirva. Saludos.

Te vuelvo a insistir, con un semáforo se controla mejor (o por lo menos a mi me parece más sencillo de entender) que con Synchronized. Si quieres saber algo más del tema pregunta!.

212  Programación / Java / Re: [Threads] wait() y notify() en: 19 Junio 2011, 18:57 pm
Synchronized se usa para acceder en exclusión mutua a una sección de código (aunque también se pueden declarar métodos como synchronized), es decir, que tan solo un objeto pueda acceder al mismo tiempo al bloque que se declara como synchronized.

Te cito unos apuntes que tengo donde hace una explicación muy breve:

Citar
Synchronized aplicado a un bloque de código:

A veces no nos interesa que todo el método sea sincronizado, sino solamente una parte de él. En ese caso, synchronized se puede usar sobre un bloque de código. Para ello es necesario indicar el objeto que será utilizado como cerrojo. Esto hace que el bloque de código se ejecute en exclusión mutua con cualquier bloque de código o método sincronizado sobre el mismo objeto.

Synchronized aplicado a un método:

Un método puede llevar el modificador synchronized. Todos los métodos con este modificador se ejecutarán en exclusión mutua. Cuando un método sincronizado se está ejecutando sobre un objeto concreto, ningún otro método sincronizado podrá ejecutarse sobre ese mismo objeto. Sin embargo, cualquier otro método no sincronizado sí podrá ejecutarse.

Synchronized nunca he llegado a comprenderlo del todo, pero la forma en la que lo estás usando creo que no es correcta. En el caso en que usas this como cerrojo no sería correcto, ya que, si no me equivoco, debes usar un objeto que sea común a todos los hilos. De la forma en que tu lo haces cada hilo es su propio cerrojo, y eso creo, y repito creo, no es correcto.

Por otro lado, y espero no te lo tomes a mal, el código lo veo algo lioso, no se, no le veo una estructura clara por así decirlo. Supongo que serán pruebas que estás realizando, pero creo que te convendría más organizarlo mejor (todo esto desde mi punto de vista, obviamente xD). Otra cosa, ¿porque heredas de Thread e implementas Runnable? Supuestamente con realizar alguna de las dos te valdría, es decir, o heredas de Thread, o implementas la interfaz Runnable.

En fin, esas son mis opiniones.

Suerte y saludos.
213  Programación / Java / Re: COMO ELABORAR ESTE PROGRAMA EN JAVA NO PUEDOO¡¡ en: 18 Junio 2011, 21:01 pm
http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html

A eso me refiero xD
214  Programación / Java / Re: [Threads] wait() y notify() en: 18 Junio 2011, 13:26 pm
Te respondí eso porque yo en los programas que he tenido que hacer para la universidad de programación concurrente, hemos usado semáforos, monitores, y luego algunas técnicas de paso de mensajes que son algo más complicadas, pero que tampoco es mucho. Por eso te recomiendo usar semáforos:

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Semaphore.html

En ese enlace tienes la clase de java, no se que conocimientos tendrás, si habrás oido alguna vez el concepto de semáforo o si no quieres usar otra cosa que no sea los métodos que heredan todas las clases de Object wait() y notify(). Si te interesa esto de parar la ejecución de los hilos y reanudarlos mediante semáforos, comentamelo y te ayudo. Los monitores es otra opción, aquí tienes su descripción:

http://download.oracle.com/javase/6/docs/api/java/util/concurrent/locks/ReentrantLock.html

Si te interesan también puedo comentarte algunos aspectos que yo he visto (no soy un experto en la materia pero algo se xD).

Si quieres también podrías postear el código que no te funciona y podríamos mirarlo el resto.

Saludos y suerte!
215  Programación / Java / Re: [Threads] wait() y notify() en: 18 Junio 2011, 00:19 am
Yo recomendaría, si te interesa lo de ejecución de varios hilos en java, es que usases semáforos, o monitores, los métodos funcionan perfectamente y no es muy complicado entenderlo, si te interesa busca algo lee y pregunta.

Saludos y suerte!
216  Programación / Java / Re: COMO ELABORAR ESTE PROGRAMA EN JAVA NO PUEDOO¡¡ en: 18 Junio 2011, 00:14 am
Lees la frase completa. Le aplicas toUpperCase(), la separas por espacios y entonces recorres el array que te devuelve la función split(). Te creas un mapa, tendrás clave Strings y valores enteros, osea, int. Entonces cuando empiezas a recorrer el array que habías dividido al principio por espacios, si la palabra que tienes en la posición i no está contenido en el mapa entonces añades al mapa esa entrada, si por el contrario está incrementas en una unidad el valor.

Cuando has recorrido todo el array entonces recorres el mapa y muestras por cada clave su valor.

Sería una posible solución pero como poder puedes hacerlo de mil formas.

Saludos.
217  Programación / Java / Re: Array dinamico en: 11 Junio 2011, 17:10 pm
Y si a la hora de declararlos lo haces así:

Código
  1. java.util.List myList<int> = new java.util.ArrayList()<int>;

De esta forma debe dejarte insertar int en vez de su representación como clase, Integer.

Saludos.
218  Programación / Java / Re: Leer archivo txt y pasarlo a un arreglo en: 11 Junio 2011, 02:18 am
Apenas existe diferencia, va a ejecutar las mismas veces las instrucciones del IF que al hacer dos bucles while. Lo único, te ahorras una instrucción respecto (leer el siguiente caracter) a lo que propuse.

Saludos.
219  Programación / Programación General / Re: recorrido de una matriz de forma recursiva en: 10 Junio 2011, 16:18 pm
No se si te he entendido bien lo que quieres decir, pero si lo que pretendes es sumar en una unidad el resto de elementos que rodean a uno dada su posición X e Y sería sencillo. Si no es eso, y lo que quieres hacer es dada una posición X e Y recorrer el resto de la matriz sumando uno pero tomando como valor inicial el de la posición X e Y ya sería algo más complicado, pero se puede realizar, aclaralo un poco y te ayudaremos en lo posible.

Si la solución que buscas es la que ha propuesto Khronos14 entonces resuelto xD.

Saludos.
220  Programación / Java / Re: [JAVA]duda code en: 10 Junio 2011, 16:10 pm
Ah! vale, ya te entiendo. Te parece raro declarar un atributo en una clase del mismo tipo que la clase. Pues eso es bastante útil para representar estructuras de datos enlazadas.

En el ejemplo que tu pones, la clase nodo tiene dos atributos, uno es el elemento que guardará (
Código
  1. public T elemento
que es del tipo que se especifique a la hora de crear la lista, y por otro lado otro nodo que apuntará al siguiente elemento de dicha lista.

Si te imaginas esto como celdas (casillas, o como quieras llamarlo) tu tendrás una casilla donde tienes guardado el elemento, y además, tienes una flecha que te dice donde está el siguiente elemento de la lista, que, evidentemente, será otra casilla.

Espero haberme explicado más o menos bien.

Mira, te dejo esta imagen a ver si consigues aclararte un poco.



Saludos.
Páginas: 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines