logo

Java-kjørbart grensesnitt

java.lang.Kjørbar er et grensesnitt som skal implementeres av en klasse hvis instanser er ment å bli utført av en tråd. Det er to måter å starte en ny tråd – underklassetråd og implementere Runnable. Det er ikke nødvendig å underklassifisere en tråd når en oppgave kan utføres ved å overstyre bare løp() metode for Runnable. 

Trinn for å opprette en ny tråd ved hjelp av Runnable 

  1. Opprett en kjørbar implementer og implementer run()-metoden. 
  2. Instantier Thread-klassen og send implementeren til Thread Thread har en konstruktør som godtar kjørbare forekomster.
  3. Påkalle start() av ​​trådforekomststart kaller internt run() til implementeren.
    • Å påkalle start() oppretter en ny tråd som kjører koden skrevet i run().
    • Å kalle run() direkte oppretter og starter ikke en ny tråd, den kjøres i samme tråd.
    • For å starte en ny utførelseslinje kall 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();  } } 

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

Forklaring: Utdataene viser to aktive tråder i programmet - hovedtråd og hovedtråd-0-metoden utføres av hovedtråden, men ved å starte starten på RunnableImpl opprettes og starter en ny tråd - tråd-0.



mvc java

Håndtering av unntak i Runnable

Kjørbart grensesnitt kan ikke kaste sjekket unntak, men RuntimeException kan kastes fra run(). Ufangede unntak håndteres av unntaksbehandleren av tråden hvis JVM ikke kan håndtere eller fange opp unntak, skriver den ut stabelsporet og avslutter flyten. 

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

Produksjon:

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 : Utdataene viser at Runnable ikke kan sende sjekkede unntak FileNotFoundException i dette tilfellet til innringerne må den håndtere sjekkede unntak i run(), men RuntimeExceptions (kastet eller automatisk generert) håndteres automatisk av JVM.

Lag quiz