Avatar billede dresen Nybegynder
28. september 2005 - 15:28 Der er 4 kommentarer og
1 løsning

Starte thread - argument til run metoden

Hej eksperter

Jeg har en skoleopgave, som jeg ikke helt kan gennemskue, hvordan jeg får løst mest hensigtsmæssigt.

Koden ser ud som følger:

public class SlowPrinterEx{
    public static void main( String[ ] args ){
        int length = 20;
        String[ ] s1 = new String[ length ];
        String[ ] s2 = new String[ length ];
        String[ ] s3 = new String[ length ];

        for( int n = 0; n < length; n++ ){
            s1[n] = "A";
            s2[n] = "B";
            s3[n] = "C";
        }
   
        startTime = System.currentTimeMillis( );
        SlowPrinter.nonBlockingPrint( s1 );
        SlowPrinter.nonBlockingPrint( s2 );       
        SlowPrinter.nonBlockingPrint( s3 );
        t = ( System.currentTimeMillis( ) - startTime ) / 1000;
        System.out.println( );
        System.out.println( "Time for 3 nonBlockingPrints: " + t + " seconds" );

    }
}

class SlowPrinter{
   
    public static void nonBlockingPrint( String[ ] s ){
        String msg = "nonBlockingPrint( String[ ] s ) not yet implemented";
        throw new NotImplementedException( msg );
    }
}
class NotImplementedException extends RuntimeException{
    NotImplementedException( ){ super( ); }
    NotImplementedException( String s ){ super( s ); }
}

Jeg skal levere indholdet af den statiske metode nonBlockingPrint, der skal oprette en thread og printe indholdet af String arrayet ud.

Min umiddelbare tanke er at lade klassen SlowPrinter arve fra klasen Thread, oprette et objekt af SlowPrinter og kalde
dette objekts start().

Mit spørgsmål går på, hvordan jeg får run() til at udskrive indholdet af det String array der gives som argument til nonBlockingPrint.

Er jeg nødt til at oprette et field i klassen SlowPrinter af typen String [] og give dette field værdien fra NonBlockingPrint når jeg  opretter SlowPrinter objektet i NonBlockingPrint (dvs. argument til SlowPrinter konstruktøren), eller kan jeg på en eller anden måde give et argument til run metoden?

Min forståelse pt. er at jeg kun skal kalde metoden start fra NonBlockingPrint, og derfor ikke er herre over kaldet til run().

På forhånd tak
Avatar billede arne_v Ekspert
28. september 2005 - 15:35 #1
nej du er nødt til at overføre  argumentet til constructor, lade constructor gemme
i en instans variabel og så lade run bruge instans variablen
Avatar billede dresen Nybegynder
28. september 2005 - 19:46 #2
Hej arne

tak for kommentaren (svaret). Smid et svar :D
Avatar billede arne_v Ekspert
28. september 2005 - 19:53 #3
svar
Avatar billede arne_v Ekspert
28. september 2005 - 19:54 #4
Java 1.5 inkluderer iøvrigt en thread pool som kan være smart hvis man skal
bruge mange tråde (men man skal stadig overføre argumenter via constructor)
Avatar billede dresen Nybegynder
02. oktober 2005 - 00:51 #5
Jeg vil læse op på det, når jeg får overskud til det. Tak for bonus info
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester