Advertisement
sedran

Thread Kullanımı 2 : ClockApp v2

Nov 5th, 2011
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.71 KB | None | 0 0
  1. package sedran;
  2.  
  3. /**
  4.  * Saat tutan, her geçen saniye saati ekrana yazan uygulama.
  5.  * Ek olarak, her 3 saniyede bir ekrana "Sedran - blog.asosyalbebe.com" yazdırır.
  6.  * @author Serdar KUZUCU
  7.  * http://blog.asosyalbebe.com
  8.  */
  9. public class ClockApp {
  10.    
  11.     public static void main(String a[]) {
  12.         new ClockApp();
  13.     }
  14.    
  15.     public ClockApp() {
  16.         Clock c = new Clock(); // Saat Thread'i yaratıldı fakat henüz başlatılmadı.
  17.         SedranWriter s = new SedranWriter(); // Başka bir Thread yaratıldı.
  18.         c.start(); // Saat Thread'i başlatıldı.
  19.         s.start(); // Diğer Thread de başlatıldı.
  20.     }
  21.    
  22.     /**
  23.      * Her 3 saniyede bir ekrana birşey yazdıran Thread.
  24.      */
  25.     private static class SedranWriter extends Thread {
  26.         /**
  27.          * Unutmayalım, Thread'i extend ettiğimiz zaman run methodu yazmamız gerekir.
  28.          * Çünkü bir Thread start() edildiğinde run() methodunu çağırır.
  29.          */
  30.         public void run() {
  31.             while(true) {
  32.                 try {
  33.                     Thread.sleep(3000);
  34.                     System.out.println("Sedran - blog.asosyalbebe.com");
  35.                 } catch(InterruptedException e) {
  36.                     e.printStackTrace(); // Thread'i uyutmaya çalışırken hata olması durumunda...
  37.                 }
  38.             }
  39.         }
  40.     }
  41.    
  42.     /**
  43.      * Saat Thread'i. Her saniye saati günceller ve ekrana yazdırır.
  44.      */
  45.     private static class Clock extends Thread {
  46.         private int sn=0, dk=0, saat=0;
  47.        
  48.         /**
  49.          * Bu saate bir saniye ekleyen method. Bu method her çağırıldığında
  50.          * saate bir saniye eklenir ve saniye ve dakika 60'a bölünerek
  51.          * çıkan sonuçları... Ne olduğunu biliyosunuz artık bunun :)
  52.          */
  53.         private void timeIncrement() {
  54.             sn++;
  55.             if(sn/60 > 0) {
  56.                 dk += sn/60;
  57.                 sn %=60;
  58.             }
  59.             if(dk/60 > 0) {
  60.                 saat += dk/60;
  61.                 dk %= 60;
  62.             }
  63.         }
  64.        
  65.         /**
  66.          * Thread start() edildiğinde çağırılan method.
  67.          * Thread program kapatılana kadar hiç bitmesin diyorsanız, bu methodun
  68.          * içerisinde bir sonsuz döngü ayarlamanız gerekiyor.
  69.          */
  70.         public void run() {
  71.             while(true) { // Sonsuz döngümüz.
  72.                 try {
  73.                     Thread.sleep(1000); // Thread'i 1 saniye beklet.
  74.                     timeIncrement(); // Sonra saate bir saniye ekle.
  75.                     System.out.println(this); // Saati yazdır.
  76.                 } catch (InterruptedException e) {
  77.                     e.printStackTrace(); // Thread'i uyutmaya çalışırken hata olması durumunda...
  78.                 }
  79.             }
  80.         }
  81.        
  82.         /**
  83.          * Clock class'ının System.out.println() methoduna
  84.          * parametre olarak atanması durumunda çağırılan method.
  85.          * Clock class'ından dijital saat dizaynında bir String üretir.
  86.          */
  87.         public String toString() {
  88.             String a = (saat/10 == 0) ? "0" + saat : ""+saat;
  89.             a += ":" + ((dk/10 == 0) ? "0" + dk : ""+dk);
  90.             a += ":" + ((sn/10 == 0) ? "0" + sn : ""+sn);
  91.             return a;
  92.         }
  93.     }
  94. }
  95.  
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement