logo

Java Çalıştırılabilir Arayüz

java.lang.Runnable örneklerinin bir iş parçacığı tarafından yürütülmesi amaçlanan bir sınıf tarafından uygulanacak bir arayüzdür. Yeni bir Konu - Alt Sınıf İş Parçacığı başlatmanın ve Runnable'ı uygulamanın iki yolu vardır. Bir görev, yalnızca koşmak() Çalıştırılabilir yöntem. 

Runnable Kullanarak Yeni Bir Konu Oluşturma Adımları 

  1. Çalıştırılabilir bir uygulayıcı oluşturun ve run() yöntemini uygulayın. 
  2. Thread sınıfını örnekleyin ve uygulayıcıyı Thread'e iletin Thread'in Runnable örnekleri kabul eden bir yapıcısı vardır.
  3. Thread örneğinin start() işlevini çağırmak, dahili olarak uygulayıcının run() işlevini çağırır.
    • start()'ı çağırmak, run()'da yazılan kodu çalıştıran yeni bir İş Parçacığı oluşturur.
    • run() komutunun doğrudan çağrılması yeni bir Konu oluşturup başlatmaz, aynı iş parçacığında çalışacaktır.
    • Yeni bir yürütme satırı başlatmak için iş parçacığında start() öğesini çağırın. 

Örnek:

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

Çıkış
Main thread is: main Thread-0 executing run() method! 

Açıklama: Çıktı, programdaki iki aktif iş parçacığını gösterir - ana iş parçacığı ve Thread-0 ana yöntemi, Ana iş parçacığı tarafından yürütülür ancak RunnableImpl'de start'ın çağrılması, yeni bir iş parçacığı - Thread-0 oluşturur ve başlatır.



java taraması.sonraki dize

Runnable'da İstisna İşleme

Çalıştırılabilir arayüz, kontrol edilen istisnayı atamaz ancak RuntimeException, run() öğesinden atılabilir. Yakalanmayan istisnalar, iş parçacığının istisna işleyicisi tarafından işlenir, eğer JVM istisnaları işleyemezse veya yakalayamazsa yığın izini yazdırır ve akışı sonlandırır. 

Örnek:

ofset yüksekliği
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();  } } 

Çıkış:

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)

Açıklama : Çıktı, Runnable'ın kontrol edilen istisnaları atamayacağını gösteriyor FileNotFoundException bu durumda arayanlar için run() içindeki işaretli istisnaları ele alması gerekir, ancak RuntimeExceptions (atılan veya otomatik olarak oluşturulan) JVM tarafından otomatik olarak işlenir.

Test Oluştur