logo

Java Runnable Interface

java.lang.Kørbar er en grænseflade, der skal implementeres af en klasse, hvis instanser er beregnet til at blive eksekveret af en tråd. Der er to måder at starte en ny tråd på - underklassetråd og implementere Runnable. Der er ingen grund til at underklassificere en tråd, når en opgave kan udføres ved kun at tilsidesætte løbe() Kørbar metode. 

Trin til at oprette en ny tråd ved hjælp af Runnable 

  1. Opret en Runnable implementer og implementer run()-metoden. 
  2. Instantiér Thread-klassen og send implementeren til Thread Thread har en konstruktør, som accepterer Runnable-instanser.
  3. Kald start() af Thread instans start internt kalder run() af implementeren.
    • Ved at kalde start() oprettes en ny tråd, der udfører koden skrevet i run().
    • At kalde run() direkte opretter og starter ikke en ny tråd, den vil køre i den samme tråd.
    • For at starte en ny udførelseslinje kald start() på tråden. 

Eksempel:

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

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

Forklaring: Outputtet viser to aktive tråde i programmet - hovedtråd og hovedtråd-0-metoden udføres af hovedtråden, men ved at starte starten på RunnableImpl oprettes og starter en ny tråd - tråd-0.



git pull syntaks

Håndtering af undtagelse i Runnable

Kørbar grænseflade kan ikke kaste kontrolleret undtagelse, men RuntimeException kan kastes fra run(). Ufangede undtagelser håndteres af undtagelsesbehandleren af ​​tråden, hvis JVM ikke kan håndtere eller fange undtagelser, det udskriver stak-sporet og afslutter flowet. 

Eksempel:

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

Produktion:

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)

Forklaring : Outputtet viser, at Runnable ikke kan kaste kontrollerede undtagelser FileNotFoundException i dette tilfælde til opkalderne skal den håndtere kontrollerede undtagelser i run(), men RuntimeExceptions (smidt eller automatisk genereret) håndteres automatisk af JVM.

Opret quiz