Java - Practica con Threads y nullpointerexception

 
Vista:

Practica con Threads y nullpointerexception

Publicado por Franjo (2 intervenciones) el 17/08/2006 15:44:13
Bueno, estoy haciendo una practica de un curso, con threads.

El codigo es el siguiente:

Almacen.java
------------------
package obligatorioTema13;

public class Almacen
{
public int MAX_NUM_ELTOS;
int[] eltos;
public int pos;

public Almacen()
{
// Constructor
// Inicializacion de valores y array.

MAX_NUM_ELTOS = 10;

int[] eltos = new int[MAX_NUM_ELTOS];

for (int i = 0; i < MAX_NUM_ELTOS; i++)
{
eltos[i] = 0;
}

pos = 0;

System.out.println("Almacen creado");
}

public synchronized void get()
{
if (pos > 0 && pos <= MAX_NUM_ELTOS)
{
System.out.println("La posición " + pos + " del array contiene el valor " + eltos[pos]);
}
}

public synchronized void put(int i)
{
if (pos > 0 && pos <= MAX_NUM_ELTOS)
{
eltos[pos] = i;
System.out.println("La posición " + pos + " insertada en el array contiene el valor " + eltos[pos]);
}
}
}

Consumidor.java
-----------------------
package obligatorioTema13;

public class Consumidor extends java.lang.Thread implements java.lang.Runnable
{
Almacen alm;

public Consumidor(Almacen a)
{
alm = a;
}

public void run()
{
for(int i = 0; i < alm.MAX_NUM_ELTOS; i++)
{
alm.pos = i;
//alm.get();
}
}
}

Productor.java
-------------------
package obligatorioTema13;

public class Productor extends java.lang.Thread implements java.lang.Runnable
{
Almacen alm;

public Productor(Almacen a)
{
alm = a;
}

public void run()
{
for(int i = 0; i < alm.MAX_NUM_ELTOS; i++)
{
alm.pos = i;
alm.put(i);
}
}
}

Y el programa principal, el que da los errores.
Programa.java
--------------------

import obligatorioTema13.*;

public class Programa {

public static void main(String[] args)
{
Almacen a = new Almacen();
Productor p = new Productor(a);
Consumidor c = new Consumidor(a);
Thread t1 = new Thread(c);
Thread t2 = new Thread(p);
t1.start();
t2.start();
System.out.println("Hilos lanzados");
}
}

El error que da es el siguiente:

Exception in thread "Thread-3" java.lang.NullPointerException
at obligatorioTema13.Almacen.put(Almacen.java:40)
at obligatorioTema13.Productor.run(Productor.java:17)
at java.lang.Thread.run(Unknown Source)

Por que me da error en la linea siguiente:
Dentro del Almacen.java, cuando el array está inicializado?

public synchronized void put(int i)
{
if (pos > 0 && pos <= MAX_NUM_ELTOS)
{
eltos[pos] = i; <<--------- EN ESTA LINEA!!!!!
System.out.println("La posición " + pos + " insertada en el array contiene el valor " + eltos[pos]);
}
}

Gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder