Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2013, 09:22
drakgoku1
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Ejemplo de Threat en una array, es correcto ?

Buenas tardes hice un examen y en el que tenía que hacer :

Crea un programa amb una classe subscriptor i una classe oferta. El main únicament crearà 20 fils de la classe subscriptor i 1 instanciarà un objecte de la classe oferta així com executarà els fils. Un fil subscriptor al executar-se esperarà un temps aleatori entre 0 i 10 segons (aproximadament) i posteriorment s’intentarà subscriure a la oferta. La oferta d’altra banda sols permetrà la subscripció dels 5 primers i dirà qui s’ha subscrit. Nota: El codi deurà estar el més optimitzat possible de manera que la redundància o codi innecessari s’avaluarà negativament fins al punt d’invalidar la resposta.

Yo hice :

Código JAVA:
Ver original
  1. package subscriptor;
  2.  
  3.  
  4. class  oferta extends Thread{
  5.     private int esperar=0;
  6.     private int cincPrimers=0;
  7.     private subscriptor[] subcriptor;
  8.    
  9.     public oferta(subscriptor[] subcriptor){
  10.         this.subcriptor =  subcriptor;
  11.     }
  12.    
  13.     public void run(){
  14.         // esperem amb un random de 0 - 10 segons
  15.         esperar = (int)(Math.random()*10);
  16.         try{
  17.             Thread.sleep(esperar);
  18.         }catch(Exception e){
  19.            
  20.         }
  21.         for(int x = 0 ; x< subcriptor.length; x++){
  22.              if(subcriptor[x]!=null){
  23.                  cincPrimers++;
  24.                  if(cincPrimers>5){
  25.                      // Si les 5 posicions que contem son més gran que 5 és a dir 6
  26.                      // restem -1 així mai ens passarem
  27.                      cincPrimers-=1;
  28.  
  29.                  }
  30.              }
  31.         }
  32.             // 0 1 2 3 4
  33.         for(int i = 0; i< cincPrimers; i++){
  34.             subcriptor[i].start();
  35.             System.out.println(subcriptor[i].getNom());
  36.         }
  37.  
  38.     }
  39. }
  40.  
  41.  
  42. public class subscriptor extends Thread {
  43.     String nom;
  44.     public subscriptor(String nom) {
  45.         this.nom = nom;
  46.     }
  47.     public String getNom(){
  48.         return nom;
  49.     }
  50.     public static void main(String[] args){
  51.         subscriptor subs1 = new subscriptor("xavi");
  52.         subscriptor subs2 = new subscriptor("maria");
  53.         subscriptor subs3 = new subscriptor("paco");
  54.         subscriptor subs4 = new subscriptor("juan");
  55.         subscriptor subs5 = new subscriptor("uer1");
  56.         subscriptor subs6 = new subscriptor("user2");
  57.         subscriptor subs7 = new subscriptor("user3");
  58.         subscriptor subs8 = new subscriptor("user4");
  59.         subscriptor subs9 = new subscriptor("mireia");
  60.         subscriptor subs10 = new subscriptor("verta");
  61.         subscriptor subs11 = new subscriptor("pepe");
  62.         subscriptor subs12 = new subscriptor("gonzalez");
  63.         subscriptor subs13 = new subscriptor("sanchez");
  64.         subscriptor subs14 = new subscriptor("david");
  65.         subscriptor subs15 = new subscriptor("florez");
  66.         subscriptor subs16 = new subscriptor("vernal");
  67.         subscriptor subs17 = new subscriptor("oscar");
  68.         subscriptor subs18 = new subscriptor("fran");
  69.         subscriptor subs19 = new subscriptor("paco2");
  70.         subscriptor subs20 = new subscriptor("fran2");
  71.         subscriptor[] subsTots = new subscriptor[] { subs1, subs2, subs3, subs4 , subs5 , subs6 , subs7 , subs8
  72.                 ,subs9,subs10,subs11,subs12,subs13,subs14,subs15,subs16,subs17,subs18,subs19,subs20};
  73.         // instanciem la oferta
  74.         oferta ofer = new oferta (subsTots);
  75.         // Fem correr tots els fulls
  76.         ofer.start();
  77.     }
  78. }

Bueno lo malo es que lo hice dentro del mismo main.

Me contestaron esto :

Comentari:

no deuries crear subscriptors dintre de la oferta

la oferta no ha d'esperar ho ha de fer cada subscriptor un temps aleatori

No pots crear 20 subscriptors dintre de la pròpia classe Subscriptor ja que cada un d'ells crea 20 més dintre que alhora crearà 20 més a dintre i així sense parar. JA T'Ho VAIG DIR A LA PRÀCTICA

Els subscriptors deuen existir independentment de la oferta. En realitat, al teu codi no tens 20 fils subscriptors en marxa (run) competint desprès d'un temps aleatori per una oferta, Tens una oferta que fa comprovacions inapropiades després d'esperar un temps i finalment fica sols 5 fils en marxa.

independentment NO Segueixes les directrius marcades a l'exercici.



Es correcta la correción del tutor ?, Yo creo que lo tengo bien, al igual me soy yo.