logo

Java-käyttöliittymä

java.lang.Runnable on rajapinta, jonka tulee toteuttaa luokassa, jonka ilmentymät on tarkoitettu suoritettavaksi säikeellä. On kaksi tapaa aloittaa uusi säie - Alaluokka säie ja toteuttaa Runnable. Ei ole tarvetta aliluokkaan säiettä, kun tehtävä voidaan tehdä ohittamalla vain juokse () Runnable-menetelmä. 

Uuden ketjun luomisen vaiheet Runnablella 

  1. Luo Runnable-toteutusohjelma ja toteuta run()-metodi. 
  2. Instantoi säieluokka ja välitä toteuttaja Threadille Threadissa on konstruktori, joka hyväksyy suoritettavat ilmentymät.
  3. Invoke start() of Thread instance start sisäisesti kutsuu toteuttajan run().
    • Start():n kutsuminen luo uuden säikeen, joka suorittaa run(:lla) kirjoitetun koodin.
    • Run():n kutsuminen suoraan ei luo ja aloita uutta säiettä, vaan se ajetaan samassa säikeessä.
    • Aloitaksesi uuden suoritusrivin kutsu start() säikeessä. 

Esimerkki:

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

Lähtö
Main thread is: main Thread-0 executing run() method! 

Selitys: Tulos näyttää kaksi ohjelman aktiivista säiettä - pääsäie ja Thread-0 -päämenetelmän suorittaa pääsäie, mutta aloituksen kutsuminen RunnableImpl:ssä luo ja aloittaa uuden säikeen - Thread-0.



java päivämäärä nyt

Käsittelypoikkeus Runnablessa

Suoritettava käyttöliittymä ei voi heittää tarkistettua poikkeusta, mutta RuntimeException voidaan heittää run(:sta). Säikeen poikkeuskäsittelijä käsittelee jääneet poikkeukset, jos JVM ei pysty käsittelemään tai sieppaamaan poikkeuksia, se tulostaa pinojäljityksen ja lopettaa kulun. 

Esimerkki:

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

Lähtö:

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)

Selitys : Tulos osoittaa, että Runnable ei voi heittää valittuja poikkeuksia FileNotFoundException tässä tapauksessa soittajille sen on käsiteltävä run()-tarkistetut poikkeukset, mutta JVM käsittelee RuntimeExceptions (heitetut tai automaattisesti luodut) automaattisesti.

Luo tietokilpailu