Video: Week 0, continued 2024
Voor de threads die specifieke countdown-gebeurtenissen activeren, zoals het lanceren van het startpunt, het starten van de gebeurtenissen en het opheffen, kunt u een andere Java-klasse maken met de naam LaunchEvent. Deze klasse gebruikt een andere techniek voor het maken en starten van threads - een die nog enkele coderegels vereist maar flexibeler is.
Het probleem bij het maken van een klasse die de Thread-klasse uitbreidt, is dat een klasse één superklasse kan hebben. Wat als je liever hebt dat je thread-object een andere klasse uitbreidt? In dat geval kunt u een klasse maken die de interface Runnable implementeert in plaats van de klasse Thread uit te breiden.
De interface Runnable markeert een object dat als een thread kan worden uitgevoerd. Het heeft maar één methode, uitvoeren, die de code bevat die in de thread wordt uitgevoerd. (De klasse Thread implementeert Runnable, daarom heeft de Thread-klasse een run-methode.)
Om de Runnable-interface te gebruiken om een thread te maken en te starten, moet u het volgende doen:
-
Een klasse maken die werkt Runnable.
-
Geef een run-methode op in de klasse Runnable.
-
Maak een instantie van de Thread-klasse en geef uw Runnable-object door aan de constructor als een parameter.
Er is een Thread-object gemaakt dat uw klasse Runnable kan uitvoeren.
-
Roep de startmethode van het Thread-object op.
De run-methode van uw Runnable-object wordt aangeroepen en wordt in een afzonderlijke thread uitgevoerd.
De eerste twee van deze stappen zijn eenvoudig. De truc zit in de derde en vierde stap, omdat je ze op verschillende manieren kunt voltooien. Dit is een manier, ervan uitgaande dat uw klasse Runnable de naam RunnableClass:
RunnableClass rc = new RunnableClass (); Thread t = new Thread (rc); t. begin();
Java-programmeurs vinden het leuk om zo beknopt mogelijk te zijn, dus je ziet deze code vaak gecomprimeerd tot iets meer als
Thread t = new Thread (new RunnableClass ()); t. begin();
of zelfs alleen dit:
nieuwe thread (nieuwe RunnableClass ()). begin();
Deze versie met één regel werkt - op voorwaarde dat u later in het programma geen toegang tot het thread-object hoeft te krijgen.