Article View: es.comp.lenguajes.java
Article #1044Practica con Threads y error nullpointerexception
From: Franjo
Date: Fri, 18 Aug 2006 06:58
Date: Fri, 18 Aug 2006 06:58
144 lines
3832 bytes
3832 bytes
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 ya está inicializado.
por que me da un error en la linea de asignación de un valor al array?
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.
Technical Details
Message-ID:
<1155884316.331516.123500@m79g2000cwm.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!m79g2000cwm.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: 1116f3,13f625f08a339242 X-Google-Attributes: gid1116f3,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!m79g2000cwm.googlegroups.com!not-for-mail From: "Franjo" <franjocc@gmail.com> Newsgroups: es.comp.lenguajes.java Subject: Practica con Threads y error nullpointerexception Date: 17 Aug 2006 23:58:36 -0700 Organization: http://groups.google.com Lines: 145 Message-ID: <1155884316.331516.123500@m79g2000cwm.googlegroups.com> NNTP-Posting-Host: 83.247.136.63 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1155884320 16364 127.0.0.1 (18 Aug 2006 06:58:40 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 18 Aug 2006 06:58:40 +0000 (UTC) User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322),gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: m79g2000cwm.googlegroups.com; posting-host=83.247.136.63; posting-account=z3JbJA0AAADIwu7vCgZt46Fi-2HtBVva