logo

Rozhranie Java Runnable Interface

java.lang.Runnable je rozhranie, ktoré má byť implementované triedou, ktorej inštancie sú určené na spustenie vláknom. Existujú dva spôsoby, ako spustiť nové vlákno – Podtrieda Thread a implementovať Runnable. Nie je potrebné podtriedu vlákna, keď je možné úlohu vykonať prepísaním iba položky spustiť() metóda Runnable. 

Kroky na vytvorenie nového vlákna pomocou Runnable 

  1. Vytvorte implementátor Runnable a implementujte metódu run(). 
  2. Instanciujte triedu Thread a odovzdajte implementátor do Thread Thread má konštruktor, ktorý akceptuje Runnable inštancie.
  3. Vyvolať štart() inštancie vlákna štart interne volá run() implementátora.
    • Vyvolaním start() sa vytvorí nové vlákno, ktoré spustí kód napísaný v run().
    • Priame volanie run() nevytvorí a nespustí nové vlákno, ktoré sa spustí v rovnakom vlákne.
    • Ak chcete spustiť nový riadok vykonávania, zavolajte na vlákno štart(). 

Príklad:

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();  } } 

Výstup
Main thread is: main Thread-0 executing run() method! 

Vysvetlenie: Výstup zobrazuje dve aktívne vlákna v programe - hlavné vlákno a hlavnú metódu Thread-0 vykonáva hlavné vlákno, ale vyvolaním spustenia na RunnableImpl sa vytvorí a spustí nové vlákno - Thread-0.



ako previesť reťazec na celé číslo

Výnimka spracovania v Runnable

Spustiteľné rozhranie nemôže vyvolať začiarknutú výnimku, ale RuntimeException môže byť vyvolané z run(). Nezachytené výnimky spracuje obsluha výnimiek vlákna, ak JVM nedokáže spracovať alebo zachytiť výnimky, vytlačí stopu zásobníka a ukončí tok. 

Príklad:

rímske číslice 1 100
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();  } } 

výstup:

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)

Vysvetlenie : Výstup ukazuje, že Runnable nemôže vyvolať začiarknuté výnimky FileNotFoundException v tomto prípade pre volajúcich musí spracovať kontrolované výnimky v run(), ale RuntimeExceptions (vyhodené alebo automaticky vygenerované) spracuje JVM automaticky.

Vytvoriť kvíz