logo

Java Runnable vmesnik

java.lang.Runnable je vmesnik, ki naj bi ga implementiral razred, katerega primerke naj bi izvajala nit. Obstajata dva načina za zagon nove niti - Subclass Thread in implementacija Runnable. Niti ni treba podrazrediti, če je nalogo mogoče opraviti s preglasitvijo samo teči() metoda Runnable. 

Koraki za ustvarjanje nove niti z uporabo Runnable 

  1. Ustvarite implementator Runnable in implementirajte metodo run(). 
  2. Instanciirajte razred Thread in posredujte implementatorja Thread Thread Thread ima konstruktor, ki sprejema primerke Runnable.
  3. Invoke start() primerka Thread start interno kliče run() izvajalca.
    • Priklic start() ustvari novo nit, ki izvaja kodo, napisano v run().
    • Neposredni klic run() ne ustvari in ne zažene nove niti, ampak se bo izvajala v isti niti.
    • Za začetek nove vrstice izvajanja pokličite start() v niti. 

primer:

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

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

Pojasnilo: Izhod prikazuje dve aktivni niti v programu - glavno nit in glavno metodo Thread-0 izvede glavna nit, vendar priklic zagona na RunnableImpl ustvari in zažene novo nit - Thread-0.



oblikovanje baze podatkov v dbms

Obravnava izjeme v Runnable

Vmesnik, ki ga je mogoče izvajati, ne more vrniti preverjene izjeme, lahko pa RuntimeException vrže iz run(). Neulovljene izjeme obravnava obravnavalec izjem niti, če JVM ne more obravnavati ali ujeti izjem, natisne sled sklada in prekine tok. 

primer:

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

Izhod:

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)

Razlaga : Izhod kaže, da Runnable ne more vrniti preverjenih izjem FileNotFoundException v tem primeru za klicatelje mora obravnavati preverjene izjeme v run(), vendar JVM samodejno obravnava izjeme RuntimeExceptions (vržene ali samodejno ustvarjene).

Ustvari kviz