| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Forskel på Java i Linux og NT? Fra : Kenneth Ahn Jensen | 
  Dato :  13-05-01 22:19 |  
  |   
            Så er jeg her igen...
 
 Jeg har siddet og svedt med noget [slam]kode, som ikke fungerer. Jeg
 arbejder i Linux, med nyeste version af Java fra Blackdown.org.( 1.3.02
 ?)
 Det besynderlige er bare at mit program fungerer fint under Windows
 NT...
 Det er noget trådprogrammering som kikser, og så tænkte jeg på om det er
 et kendt problem, eller er det bare mig der har gjort noget forkert?
 
 Mit problem er at start() metoden ikke kalder run() og returnerer heller
 ikke - dvs. programmet hænger når det har kaldt GameServer.start().
 Hvis jeg undlader at kalde start() og bare kører videre, fungerer alting
 fint...
 Min teori går på at Linux/Java kombinationen ikke kan lide at jeg
 starter en tråd fra en tråd. (!) Kan det passe?
 
 Al hjælp modtages med kyshånd.
 Mvh
 Kenneth
 
 
 
 Her er eksemplet:
 
 class GameServer extends Thread{
 
     private Socket[] socketArray = new Socket[4];
 
     // anvendes til sende BallUpdate objekter
     ObjectOutputStream[] objOutStreamArray = new ObjectOutputStream[4];
 
     // anvendes til at modtage XXX objekter
     ObjectInputStream[] objInStreamArray = new ObjectInputStream[4];
 
     BufferedReader in;
 
     // Div variabler
     private boolean isRunning = false;
 
     // Bolden, som kampen handler om
     Ball ball = new Ball( 0, 0, 500, 245, 256, 128 );
 // DETTE OBJEKT IMPLEMENTEERER Runnable interfacet - og bliver dermed
 til en tråd.
 
     // for debugging purposes
     String simonsays = "GameServer says: ";
     boolean debugging = true;
 
     // konstruktor
     public GameServer ( Socket[] socketArray ) throws IOException {
 
          for ( int i = 0; i < socketArray.length; i++) {
              objOutStreamArray[i] = new ObjectOutputStream(
 socketArray[i].getOutputStream() );
              objInStreamArray[i] = new ObjectInputStream(
 socketArray[i].getInputStream() );
          }
         start();        // HER GAAR DET GALT ! ! !   Start metoden
 kalder aldrig run() og returnerer ikke.
     }
 
  public void run () {
      try {
          while (true){
               for ( int i = 0; i < objOutStreamArray.length ; i++)
                     objOutStreamArray[i].writeObject( new BallUpdate(
 ball.getX(), ball.getY(),
                     ball.getdX(), ball.getdY()) );
 
               for ( int i = 0; i < objOutStreamArray.length ; i++)
                     objOutStreamArray[i].flush();
 
       try{
           Thread.sleep( 5000 );
           if(debugging)
        System.out.println( simonsays + "venter 5 sek...");
       }
       catch( InterruptedException I ){ }
       }
      }
  catch(IOException e) {
      System.out.println ( simonsays + "IOException");
  }
  catch(Exception ec){
      System.out.println ( simonsays + "ClassNotFoundException");
  }
 
  }
 
 }
 
 
 
 
  
            
             |   |   
            
        
 
            
         
           Lars (13-05-2001) 
         
	
            | Kommentar Fra : Lars | 
  Dato :  13-05-01 21:56 |  
  |   
            Hej Kenneth
 
 At implementere Runnable giver ikke i sig selv en tråd, men garanterer blot,
 at dit objekt har en run()-metode. Hvis du vælger denne løsning, skal du
 altså selv lave tråden som følgende:
 
 Thread myThread = new Thread(myRunnable);
 myThread.start();
 
 eller alternativt (hvis du ikke har brug for identifieren)
 
 new Thread(myRunnable).start();
 
 Dette skal placeres istedet for dit kald til start i constructoren (som jeg
 forøvrigt ikke kan forstå at du kan compile, da der ikke er nogen
 start()-metode.)
 
 /Lars
 
 
 "Kenneth Ahn Jensen" <kaj@itu.dk> skrev i en meddelelse
 news:3AFEFA36.98A3E36F@itu.dk...
 > Så er jeg her igen...
 >
 > Jeg har siddet og svedt med noget [slam]kode, som ikke fungerer. Jeg
 > arbejder i Linux, med nyeste version af Java fra Blackdown.org.( 1.3.02
 > ?)
 > Det besynderlige er bare at mit program fungerer fint under Windows
 > NT...
 > Det er noget trådprogrammering som kikser, og så tænkte jeg på om det er
 > et kendt problem, eller er det bare mig der har gjort noget forkert?
 >
 > Mit problem er at start() metoden ikke kalder run() og returnerer heller
 > ikke - dvs. programmet hænger når det har kaldt GameServer.start().
 > Hvis jeg undlader at kalde start() og bare kører videre, fungerer alting
 > fint...
 > Min teori går på at Linux/Java kombinationen ikke kan lide at jeg
 > starter en tråd fra en tråd. (!) Kan det passe?
 >
 > Al hjælp modtages med kyshånd.
 > Mvh
 > Kenneth
 >
 >
 >
 > Her er eksemplet:
 >
 > class GameServer extends Thread{
 >
 >     private Socket[] socketArray = new Socket[4];
 >
 >     // anvendes til sende BallUpdate objekter
 >     ObjectOutputStream[] objOutStreamArray = new ObjectOutputStream[4];
 >
 >     // anvendes til at modtage XXX objekter
 >     ObjectInputStream[] objInStreamArray = new ObjectInputStream[4];
 >
 >     BufferedReader in;
 >
 >     // Div variabler
 >     private boolean isRunning = false;
 >
 >     // Bolden, som kampen handler om
 >     Ball ball = new Ball( 0, 0, 500, 245, 256, 128 );
 > // DETTE OBJEKT IMPLEMENTEERER Runnable interfacet - og bliver dermed
 > til en tråd.
 >
 >     // for debugging purposes
 >     String simonsays = "GameServer says: ";
 >     boolean debugging = true;
 >
 >     // konstruktor
 >     public GameServer ( Socket[] socketArray ) throws IOException {
 >
 >          for ( int i = 0; i < socketArray.length; i++) {
 >              objOutStreamArray[i] = new ObjectOutputStream(
 > socketArray[i].getOutputStream() );
 >              objInStreamArray[i] = new ObjectInputStream(
 > socketArray[i].getInputStream() );
 >          }
 >         start();        // HER GAAR DET GALT ! ! !   Start metoden
 > kalder aldrig run() og returnerer ikke.
 >     }
 >
 >  public void run () {
 >      try {
 >          while (true){
 >               for ( int i = 0; i < objOutStreamArray.length ; i++)
 >                     objOutStreamArray[i].writeObject( new BallUpdate(
 > ball.getX(), ball.getY(),
 >                     ball.getdX(), ball.getdY()) );
 >
 >               for ( int i = 0; i < objOutStreamArray.length ; i++)
 >                     objOutStreamArray[i].flush();
 >
 >       try{
 >           Thread.sleep( 5000 );
 >           if(debugging)
 >        System.out.println( simonsays + "venter 5 sek...");
 >       }
 >       catch( InterruptedException I ){ }
 >       }
 >      }
 >  catch(IOException e) {
 >      System.out.println ( simonsays + "IOException");
 >  }
 >  catch(Exception ec){
 >      System.out.println ( simonsays + "ClassNotFoundException");
 >  }
 >
 >  }
 >
 > }
 >
 >
 >
 >
 
 
  
            
             |   |   
            
        
 
            
         
           Lars (13-05-2001) 
         
	
            | Kommentar Fra : Lars | 
  Dato :  13-05-01 22:08 |  
  |   
            OK - lad mig lige korrigere mig selv, inden nogen andre gør det for mig. Jeg
 havde ikke lige set, at din klasse nedarvede fra Thread - dit kald til start
 er derfor selvfølgeligt OK.
 
 
 "Lars" <svend@bent.dk> skrev i en meddelelse
 news:9dms58$30t1$1@news.cybercity.dk...
 > Hej Kenneth
 >
 > At implementere Runnable giver ikke i sig selv en tråd, men garanterer
 blot,
 > at dit objekt har en run()-metode. Hvis du vælger denne løsning, skal du
 > altså selv lave tråden som følgende:
 >
 > Thread myThread = new Thread(myRunnable);
 > myThread.start();
 >
 > eller alternativt (hvis du ikke har brug for identifieren)
 >
 > new Thread(myRunnable).start();
 >
 > Dette skal placeres istedet for dit kald til start i constructoren (som
 jeg
 > forøvrigt ikke kan forstå at du kan compile, da der ikke er nogen
 > start()-metode.)
 >
 > /Lars
 >
 >
 > "Kenneth Ahn Jensen" <kaj@itu.dk> skrev i en meddelelse
 > news:3AFEFA36.98A3E36F@itu.dk...
 > > Så er jeg her igen...
 > >
 > > Jeg har siddet og svedt med noget [slam]kode, som ikke fungerer. Jeg
 > > arbejder i Linux, med nyeste version af Java fra Blackdown.org.( 1.3.02
 > > ?)
 > > Det besynderlige er bare at mit program fungerer fint under Windows
 > > NT...
 > > Det er noget trådprogrammering som kikser, og så tænkte jeg på om det er
 > > et kendt problem, eller er det bare mig der har gjort noget forkert?
 > >
 > > Mit problem er at start() metoden ikke kalder run() og returnerer heller
 > > ikke - dvs. programmet hænger når det har kaldt GameServer.start().
 > > Hvis jeg undlader at kalde start() og bare kører videre, fungerer alting
 > > fint...
 > > Min teori går på at Linux/Java kombinationen ikke kan lide at jeg
 > > starter en tråd fra en tråd. (!) Kan det passe?
 > >
 > > Al hjælp modtages med kyshånd.
 > > Mvh
 > > Kenneth
 > >
 > >
 > >
 > > Her er eksemplet:
 > >
 > > class GameServer extends Thread{
 > >
 > >     private Socket[] socketArray = new Socket[4];
 > >
 > >     // anvendes til sende BallUpdate objekter
 > >     ObjectOutputStream[] objOutStreamArray = new ObjectOutputStream[4];
 > >
 > >     // anvendes til at modtage XXX objekter
 > >     ObjectInputStream[] objInStreamArray = new ObjectInputStream[4];
 > >
 > >     BufferedReader in;
 > >
 > >     // Div variabler
 > >     private boolean isRunning = false;
 > >
 > >     // Bolden, som kampen handler om
 > >     Ball ball = new Ball( 0, 0, 500, 245, 256, 128 );
 > > // DETTE OBJEKT IMPLEMENTEERER Runnable interfacet - og bliver dermed
 > > til en tråd.
 > >
 > >     // for debugging purposes
 > >     String simonsays = "GameServer says: ";
 > >     boolean debugging = true;
 > >
 > >     // konstruktor
 > >     public GameServer ( Socket[] socketArray ) throws IOException {
 > >
 > >          for ( int i = 0; i < socketArray.length; i++) {
 > >              objOutStreamArray[i] = new ObjectOutputStream(
 > > socketArray[i].getOutputStream() );
 > >              objInStreamArray[i] = new ObjectInputStream(
 > > socketArray[i].getInputStream() );
 > >          }
 > >         start();        // HER GAAR DET GALT ! ! !   Start metoden
 > > kalder aldrig run() og returnerer ikke.
 > >     }
 > >
 > >  public void run () {
 > >      try {
 > >          while (true){
 > >               for ( int i = 0; i < objOutStreamArray.length ; i++)
 > >                     objOutStreamArray[i].writeObject( new BallUpdate(
 > > ball.getX(), ball.getY(),
 > >                     ball.getdX(), ball.getdY()) );
 > >
 > >               for ( int i = 0; i < objOutStreamArray.length ; i++)
 > >                     objOutStreamArray[i].flush();
 > >
 > >       try{
 > >           Thread.sleep( 5000 );
 > >           if(debugging)
 > >        System.out.println( simonsays + "venter 5 sek...");
 > >       }
 > >       catch( InterruptedException I ){ }
 > >       }
 > >      }
 > >  catch(IOException e) {
 > >      System.out.println ( simonsays + "IOException");
 > >  }
 > >  catch(Exception ec){
 > >      System.out.println ( simonsays + "ClassNotFoundException");
 > >  }
 > >
 > >  }
 > >
 > > }
 > >
 > >
 > >
 > >
 >
 >
 
 
  
            
             |   |   
            
        
 
            
         
            Kenneth Ahn Jensen (14-05-2001) 
         
	
            | Kommentar Fra : Kenneth Ahn Jensen | 
  Dato :  14-05-01 06:52 |  
  |  
 
            On Sun, 13 May 2001 23:08:07 +0200, "Lars" <svend@bent.dk> wrote:
 >OK - lad mig lige korrigere mig selv, inden nogen andre gør det for mig. Jeg
 >havde ikke lige set, at din klasse nedarvede fra Thread - dit kald til start
 >er derfor selvfølgeligt OK.
 Ja, og det sære er jo at det virker 100% efter hensigten på [skod] Windows NT, men tråden starter
 aldrig når programmet afvikles på Linux platformen...
 Jeg havde ikke regnet med at skulle blive gråhåret som 26 årig...    
Kenneth
 ~~~~~~~~~~~~~~~~~
 ~      --- Seti@Home ---     ~
 ~       541WU/3645hrs       ~
 ~   -( Join Team YETI )-   ~
 ~~~~~~~~~~~~~~~~~
            
              |   |   
            
        
 
            
         
           Kenneth Ahn Jensen (14-05-2001) 
         
	
            | Kommentar Fra : Kenneth Ahn Jensen | 
  Dato :  14-05-01 20:44 |  
  |  
 
            Hmmm, det er næsten pinligt at indrømme...
 Grunden til at programnmet ikke virkede er sandsynligvis at de fire
 maskiner jeg har prøvet at køre det på, alle kører en firewall, som
 åbenbart lukker af for den port som mit program har valgt at bruge... Nu
 kører jeg det på nogle andre linux-maskiner, og der virker det fint.
 Så jeg havde altså ikke fundet en bug alligevel.    
Mvh
 Kenneth
 Kenneth Ahn Jensen wrote:
 > Så er jeg her igen...
 >
 > Jeg har siddet og svedt med noget [slam]kode, som ikke fungerer. Jeg
 > arbejder i Linux, med nyeste version af Java fra Blackdown.org.( 1.3.02
 > ?)
 > Det besynderlige er bare at mit program fungerer fint under Windows
 > NT...
 > Det er noget trådprogrammering som kikser, og så tænkte jeg på om det er
 > et kendt problem, eller er det bare mig der har gjort noget forkert?
 >
 > Mit problem er at start() metoden ikke kalder run() og returnerer heller
 > ikke - dvs. programmet hænger når det har kaldt GameServer.start().
 > Hvis jeg undlader at kalde start() og bare kører videre, fungerer alting
 > fint...
 > Min teori går på at Linux/Java kombinationen ikke kan lide at jeg
 > starter en tråd fra en tråd. (!) Kan det passe?
 >
 > Al hjælp modtages med kyshånd.
 > Mvh
 > Kenneth
 >
            
              |   |   
            
        
 
            
         
           Martin Schou (14-05-2001) 
         
	
            | Kommentar Fra : Martin Schou | 
  Dato :  14-05-01 20:13 |  
  |  
 
            > Så jeg havde altså ikke fundet en bug alligevel.    
Jamen det havde du da .. fejlen sad ca 40 centimeter bag tastaturet ... 
 ;-p
 /Hektor
            
              |   |   
            
        
 
            
         
           Lars Hansen (15-05-2001) 
         
	
            | Kommentar Fra : Lars Hansen | 
  Dato :  15-05-01 17:48 |  
  |  
 
            Det er fint at du har fået det til at køre, men jeg har selv prøvet
 at køre blackdown, og jeg synes ikke helt at den holder.
 IBM har en stor commitment til linux og java, og deres version
 af JDK1.3 performer rigtigt godt
 /Lars Bo Hansen
 "Kenneth Ahn Jensen" <kaj@itu.dk> wrote in message
 news:3B00356C.36B0EBEA@itu.dk...
 > Hmmm, det er næsten pinligt at indrømme...
 >
 > Grunden til at programnmet ikke virkede er sandsynligvis at de fire
 > maskiner jeg har prøvet at køre det på, alle kører en firewall, som
 > åbenbart lukker af for den port som mit program har valgt at bruge... Nu
 > kører jeg det på nogle andre linux-maskiner, og der virker det fint.
 >
 > Så jeg havde altså ikke fundet en bug alligevel.    
>
 > Mvh
 > Kenneth
 >
 >
 > Kenneth Ahn Jensen wrote:
 >
 > > Så er jeg her igen...
 > >
 > > Jeg har siddet og svedt med noget [slam]kode, som ikke fungerer. Jeg
 > > arbejder i Linux, med nyeste version af Java fra Blackdown.org.( 1.3.02
 > > ?)
 > > Det besynderlige er bare at mit program fungerer fint under Windows
 > > NT...
 > > Det er noget trådprogrammering som kikser, og så tænkte jeg på om det er
 > > et kendt problem, eller er det bare mig der har gjort noget forkert?
 > >
 > > Mit problem er at start() metoden ikke kalder run() og returnerer heller
 > > ikke - dvs. programmet hænger når det har kaldt GameServer.start().
 > > Hvis jeg undlader at kalde start() og bare kører videre, fungerer alting
 > > fint...
 > > Min teori går på at Linux/Java kombinationen ikke kan lide at jeg
 > > starter en tråd fra en tråd. (!) Kan det passe?
 > >
 > > Al hjælp modtages med kyshånd.
 > > Mvh
 > > Kenneth
 > >
 >
            
              |   |   
            
        
 
            
         
            Troels Arvin (16-05-2001) 
         
	
            | Kommentar Fra : Troels Arvin | 
  Dato :  16-05-01 00:53 |  
  |  
 
            On Tue, 15 May 2001 18:48:22 +0200, "Lars Hansen" <spam@el-lal.dk> wrote:
 > Det er fint at du har fået det til at køre, men jeg har selv prøvet at
 > køre blackdown, og jeg synes ikke helt at den holder.
 > 
 > IBM har en stor commitment til linux og java, og deres version af
 > JDK1.3 performer rigtigt godt
 I følge  http://www.volano.com/report.html kommer det lidt an på, hvordan
 man definerer "performer": Hvis man er interesseret i masser af
 netværksforbindelser, så ser Blackdown's JRE noget bedre ud end IBMs.
 -- 
 Greetings from Troels Arvin, Copenhagen, Denmark
            
              |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |