logo

Java-uitvoerbare interface

java.lang.Uitvoerbaar is een interface die moet worden geïmplementeerd door een klasse waarvan de instanties bedoeld zijn om door een thread te worden uitgevoerd. Er zijn twee manieren om een ​​nieuwe Thread te starten: Subklasse Thread en Runnable te implementeren. Het is niet nodig om een ​​Thread in een subklasse te plaatsen als een taak kan worden uitgevoerd door alleen de loop() methode van Runnable. 

Stappen voor het maken van een nieuwe thread met Runnable 

  1. Maak een Runnable-implementer en implementeer de run() -methode. 
  2. Instantieer de Thread-klasse en geef de implementer door aan de Thread Thread heeft een constructor die Runnable-instanties accepteert.
  3. Roep start() van Thread-instantie start aan en roept intern run() van de implementeerder aan.
    • Door start() aan te roepen, wordt een nieuwe Thread gemaakt die de code uitvoert die in run() is geschreven.
    • Als u run() rechtstreeks aanroept, wordt er geen nieuwe thread gemaakt en gestart, maar wordt deze in dezelfde thread uitgevoerd.
    • Om een ​​nieuwe uitvoeringsregel te starten, roept u start() op de thread aan. 

Voorbeeld:

java
// Runnable Interface Implementation public class Geeks  {  private class RunnableImpl implements Runnable   {  // Overriding the run Method  @Override  public void run()  {  System.out.println(Thread.currentThread().getName()  + ' executing run() method!');  }  }     // Main Method  public static void main(String[] args)   {   System.out.println('Main thread is: '  + Thread.currentThread().getName());    // Creating Thread  Thread t1 = new Thread(new Geeks().new RunnableImpl());    // Executing the Thread  t1.start();  } } 

Uitvoer
Main thread is: main Thread-0 executing run() method! 

Uitleg: De uitvoer toont twee actieve threads in het programma: hoofdthread en Thread-0. De hoofdmethode wordt uitgevoerd door de hoofdthread, maar door het aanroepen van de start op RunnableImpl wordt een nieuwe thread gemaakt en gestart: Thread-0.



als anders als java

Afhandeling van uitzonderingen in Runnable

Uitvoerbare interface kan geen gecontroleerde uitzondering genereren, maar RuntimeException kan wel vanuit run() worden gegenereerd. Niet-afgevangen uitzonderingen worden afgehandeld door de uitzonderingshandler van de thread. Als JVM de uitzonderingen niet kan afhandelen of opvangen, wordt de stacktracering afgedrukt en wordt de stroom beëindigd. 

Voorbeeld:

aangrenzende hoeken
java
// Checking Exceptions in Runnable Interface import java.io.FileNotFoundException; public class Geeks {  private class RunnableImpl implements Runnable   {  // Overriding the run method   @Override  public void run()  {  System.out.println(Thread.currentThread().getName()  + ' executing run() method!');    // Checked exception can't be thrown Runnable must  // handle checked exception itself  try {  throw new FileNotFoundException();  }  catch (FileNotFoundException e) {  System.out.println('Must catch here!');  e.printStackTrace();  }  int r = 1 / 0;    // Below commented line is an example  // of thrown RuntimeException.    // throw new NullPointerException();  }  }    public static void main(String[] args)  {  System.out.println('Main thread is: ' +  Thread.currentThread().getName());     // Create a Thread  Thread t1 = new Thread(new Geeks().new RunnableImpl());    // Running the Thread  t1.start();  } } 

Uitgang:

Thread-0 executing run() method!  
Must catch here!
java.io.FileNotFoundException
at RunnableDemo$RunnableImpl.run(RunnableDemo.java:25)
at java.lang.Thread.run(Thread.java:745)
Exception in thread 'Thread-0' java.lang.ArithmeticException: / by zero
at RunnableDemo$RunnableImpl.run(RunnableDemo.java:31)
at java.lang.Thread.run(Thread.java:745)

Uitleg : De uitvoer laat zien dat Runnable geen gecontroleerde uitzonderingen kan genereren FileNotFoundException in dit geval moet het voor de aanroepers gecontroleerde uitzonderingen in run() afhandelen, maar RuntimeExceptions (gegooid of automatisch gegenereerd) worden automatisch door de JVM afgehandeld.

Quiz maken