Creandolo todo desde el main seria algo parecido a lo siguiente:
Main:
Código JAVA:
Ver originalpublic class Main {
/**
* @param args
*/
public static void main
(String[] args
) { Oferta oferta = new Oferta();
oferta.start();
Subscriptor sub1 = new Subscriptor("Uno", oferta);
Subscriptor sub2 = new Subscriptor("Dos", oferta);
Subscriptor sub3 = new Subscriptor("Tres", oferta);
Subscriptor sub4 = new Subscriptor("Cuatro", oferta);
Subscriptor sub5 = new Subscriptor("Cinco", oferta);
Subscriptor sub6 = new Subscriptor("Seis", oferta);
Subscriptor sub7 = new Subscriptor("Siete", oferta);
List<Subscriptor> listaSubs = new ArrayList<Subscriptor>();
listaSubs.add(sub1);
listaSubs.add(sub2);
listaSubs.add(sub3);
listaSubs.add(sub4);
listaSubs.add(sub5);
listaSubs.add(sub6);
listaSubs.add(sub7);
for(int i=0;i<listaSubs.size();i++){
listaSubs.get(i).start();
}
}
}
Clase Subscriptor:
Código JAVA:
Ver originalpublic class Subscriptor
extends Thread {
private Oferta oferta;
return this.nombre;
}
public Subscriptor
(String nombre, Oferta oferta
){ this.nombre=nombre;
this.oferta=oferta;
}
public void run(){
int num
= (int)(Math.
random()*10); try {
oferta.apuntarse(this);
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase Oferta:
Código JAVA:
Ver originalpublic class Oferta
extends Thread{ List<Subscriptor> listaSubscriptores = new ArrayList<Subscriptor>();
public void apuntarse(Subscriptor subs){
if(listaSubscriptores.size()<5){
this.listaSubscriptores.add(subs);
System.
out.
println("El subscriptor "+subs.
getNombre()+" se ha apuntado a la oferta"); }
}
}
Si hay que crear los subscriptores en el main y luego iniciarlos desde un solo hilo la cosa se complica bastante, ya que estarias trabajando con el objeto Subscriptor recursivamente y habria que pasarle el objeto oferta a cada subscriptor de la siguiente forma:
Clase main:
Código JAVA:
Ver originalpublic class Main {
/**
* @param args
*/
public static void main
(String[] args
) { Oferta oferta = new Oferta();
oferta.start();
Subscriptor sub1 = new Subscriptor("Uno");
Subscriptor sub2 = new Subscriptor("Dos");
Subscriptor sub3 = new Subscriptor("Tres");
Subscriptor sub4 = new Subscriptor("Cuatro");
Subscriptor sub5 = new Subscriptor("Cinco");
Subscriptor sub6 = new Subscriptor("Seis");
Subscriptor sub7 = new Subscriptor("Siete");
List<Subscriptor> listaSubs = new ArrayList<Subscriptor>();
listaSubs.add(sub1);
listaSubs.add(sub2);
listaSubs.add(sub3);
listaSubs.add(sub4);
listaSubs.add(sub5);
listaSubs.add(sub6);
listaSubs.add(sub7);
Subscriptor inicial = new Subscriptor("Inicial", oferta, listaSubs);
inicial.run();
}
}
Clase subscriptor:
Código JAVA:
Ver originalpublic class Subscriptor
extends Thread {
private Oferta oferta;
List<Subscriptor> listaSubs;
public Oferta getOferta() {
return oferta;
}
public void setOferta(Oferta oferta) {
this.oferta = oferta;
}
public void setNombre
(String nombre
) { this.nombre = nombre;
}
return this.nombre;
}
public Subscriptor
(String nombre
){ this.nombre=nombre;
}
public Subscriptor
(String nombre, Oferta oferta,
List<Subscriptor> listaSubs) {
this.oferta=oferta;
this.nombre=nombre;
this.listaSubs=listaSubs;
}
public void run(){
if(listaSubs!=null){
for(int i=0;i<this.listaSubs.size();i++){
Subscriptor s=listaSubs.get(i);
s.setOferta(this.oferta);
s.start();
}
}
else{
int num
= (int)(Math.
random()*10); try {
oferta.apuntarse(this);
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Creo que las dos versiones estan implementadas correctamente, sino es asi, que me lo corrijan que hay gente por aqui que sabe bastante mas que yo eje.
Un saludo y espero que te haya servido.