Java - Çok Kanallı Programlama (Multi-Threaded Programming) #2

Perşembe, Mayıs 21, 2015 kustemura 0 Yorum


Önceki örnek üzerinden devam ediyorum.Buradan ona ulaşabilirsiniz.
package com.blogger_project;

class NewThread implements Runnable {
 Thread thread;

 NewThread() {
  thread = new Thread(this, "Demo Thread");
  System.out.println("Çocuk Thread" + thread);
  thread.start();
 }

 @Override
 public void run() {
  try {
   for (int i = 5; i > 0; i--) {
    System.out.println("Çocuk Thread " + i);
    Thread.sleep(500);
   }
  } catch (final InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println("Çocuk Thread'den çıkıldı.");
 }
}

class ThreadDemo {
 public static void main(final String args[]) {
  new NewThread();
  try {
   for (int i = 5; i > 0; i--) {
    System.out.println("Ana Thread " + i);
    Thread.sleep(1000);
   }
  } catch (final InterruptedException e) {
   e.printStackTrace();
   
  }
  System.out.println("Ana Thread'den çıkıldı.");
 }
}
Programın Çıktısı : 

run() methodunu oluşturabilmemiz için Runnable arabirimini sınıfımıza implement ediyoruz.
thread = new Thread(this, "Demo Thread"); 
Burada this argümanı nesne thread nesnesi üzerindeki run() methoduna göndermede bulunur.start() methodu ise run() methodunu başlatır.Bu Çocuk Thread'in başlamasına neden olur.Ardından main methodundaki NewThread() constructoru çalışmaya başlar ve main() methoduna geri döner.Burada her iki for döngüsü CPU'yu paylaşarak çalışmaya devam ederler.( Programı çalıştırdığınızda elde edeceğiniz çıktı buradaki çıktı ile aynı olmayabilir, işlemci hızına ve görev yüküne göre farklılıklar göstericektir.) Genellikle çalışmayı bitiren son kanal Ana Kanal olmak zorundadır.JVM'in bazı versiyonlarında ana kanal çocuk kanaldan önce biterse ,  Java çalışma zamanı sistemi askıya alınabilir.(suspended).Yukarıdaki program her zaman Ana Thread'in Çocuk Thread'den sonra bitmesini garantiler .Çünkü Çocuk Thread 500 milisaniye uyurken , Ana Thread 1000 milisaniye uyur ve bu yapı Çocuk Thread'in Ana Threadden daha hızlı bir şekilde sonlanmasına neden olur.

0 yorum :