🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #1043

Practica con Threads y error nullpointerexception

#1043
From: Franjo
Date: Fri, 18 Aug 2006 06:58
144 lines
3855 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: <1155884293.679133.218600@p79g2000cwp.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!postnews.google.com!p79g2000cwp.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 1116f3,13f625f08a339242,start
X-Google-Attributes: gid1116f3,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!postnews.google.com!p79g2000cwp.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:13 -0700
Organization: http://groups.google.com
Lines: 145
Message-ID: <1155884293.679133.218600@p79g2000cwp.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 1155884298 16306 127.0.0.1 (18 Aug 2006 06:58:18 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Fri, 18 Aug 2006 06:58:18 +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: p79g2000cwp.googlegroups.com; posting-host=83.247.136.63;
   posting-account=z3JbJA0AAADIwu7vCgZt46Fi-2HtBVva