Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ertuğrul Kara
Ertuğrul Kara
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
1 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: belirtilen birlikte kalitim metodu olursak program public sinifi sinifin sinifindan standart thread windows yukaridaki zamanla J#.NET / Java Ertuğrul Kara
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : J#.NET / Java
Yayınlanma Tarihi : 10.2.2006
Okunma Sayısı : 73274
Yorum Sayısı : 2     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
JAVA İçinde Thread Kullanımı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Thread yani iş parçacığı Windows uygulamalarının yaygınlaşmasıyla vazgeçilmez hale geldi. Üstelik eski tarz programlama da (VB60, TC, TPascal) kullanılamayan ve zamanla C++, VC++ gibi nesne yönelimli dillerin gelişmesiyle, kendini Windows uygulamalarında daha etkin biçimde sergileyen Thread ler C++ ile birlikte java içinde de popüler olmayı başardı. Popüler olmaktan da öte zamanla gereksinim halini aldı.

Yazdığınız herhangi bir java programının başlangıç yordamı public sınıfın main metodudur. Bu metod işlerken standart program için bir Thread oluşur ve program sonlandığında Thread’ da sonlanır. Ancak bununla birlikte bir sınıf içindeki diğer yordamlarında hem programın bir parçasıymışçasına hem de programdan bağımsız işlemci gücü kullanarak çalışması Thread sayesinde yapılabilir. Bu iş parçacıkları ana iş parçacığı içinden yönetilebilir.

Thread ler tam olarak iki şekilde yapılır. Bunlardan birisi karmaşık olan Runnable arayüzünü kullanmak diğeri ise Thread sınıfından kalıtım almak. Thread sınıfından kalıtım yapacak olursak karşımıza çıkacak olan dezavantaj şu dur; Java dili tek bir kalıtıma (Single inheritance) izin verdiğinden tasarımda sorunlar çıkabilir. Ancak Runanable arayüzü ile de sınıflar Thread haline dönüştürüldüğünde çok fazla kod yazmamız gerekebilir. Şimdilik biz Thread sınıfından kalıtım alarak iş parçası oluşturmayı deneyeceğiz.

class Islem extends Thread
{
   private String isim=””;
   private int donguSay=0;
   public Islem(String isim, int donguSay)
   {
        this.donguSay=donguSay;
       this.isim=isim;
   }
   public void run()
   {
       for (int i=0; i<donguSay; i++)
      {
         System.out.println(i +”.” + this.isim + “ yazdirildi”);
      }
   }
}
Yukarıdaki sınıfı inceleyecek olursak ilsem sınıfı Thread sınıfından türetilerek yapıcısında 2 tane parametre alması sağlanıyor. Daha sonra alınan parametreler, sınıfın local değişkenlerine atılıyor. Thread sınıfından türetilen bir sınıfın Thread olabilmesi için run() metodunu içermesi gerekir. Daha doğrusu Thread sınıfından türetilen sınıfın içine yazılan run() metodu Thread içinde yapılacak olan işlemleri içerir. Bizim sınıfımızda ki run metodu yapıcı ile gönderdiğimiz parametreler doğrultusunda ekrana bilgi vermektedir. Şimdi oluşturduğumuz bu Thread i uygulama içinden nasıl kullanacağımıza bakalım.

public class Uygulama
{
   public static void main(String args[])
   {
    Islem i1 = new Islem("Ertugrul", 2); //Ertugrul ismi ile 2 kez
    Islem r2 = new Islem("Mehmet Metin", 3); // Mehmet Metin ismi ile 3 kez
    Islem r3 = new Islem("Sun McrSys", 3); // Sun McrSys ile 3 kez

    i1.start();
    i2.start();
    i3.start();
   }
}

Yukarıdaki sınıfı incelediğimizde yapıcısı ile parametre gönderilmiş 3 adet sınıf oluşturuluyor ve start komutu ile çalıştırılıyor. Biz start komutunu Islem sınıfının yapıcısına belirterek otomatik başlamasını sağlayabilirdik ama bu Thread in yönetimini elimizden kaçırmamıza neden olabilirdi :) Şimdi Thread yönetimi için gerekli bazı standart metodları tanımlayalım…

Metod İşlevi
start() Bu metod Thread için çalıştırıldığında, Thread işlemeye başlar.
stop() Thread' i öldürür. Bu metod sonrasında Thread tekrar start ile çalışır hale getirilmelidir.
wait() Thread' i beklemeye alır. Metod uyarılana kadar yada belirtilen süre bitene kadar beklemede kalır.
notify() Bekleme durumundaki Thread' i uyandırır. Metod sonrasında Thread, haz durumuna geçer.
sleep() wait() gibidir. Thread' i uyku moduna alır. Ancak interrupt() metodu ile uyandırılabilir.
interrupt() sleep() yada wait() ile uyutulmuş bir Thread' i uyandırır.
yield() Çalıştırılıyorken anlık bir bekleme üreterek kendisi ile aynı işlem önceliğine sahip başka bir Thread' in çalışmasına imkan sağlar.
join() Genelde başka bir Thread içinde kullanılır. Belirtilen Thread' in belirtilen süre yada ölene kadar beklemesini sağlar.
Thread önceliklerini belirlemek;

Windows işletim sisteminde görev yöneticisinde işlemlere öncelik atamayı mutlaka yapmışsınızdır. Bu işlemlere öncelik atamanın arka planında neler olduğuna bir bakacak olursak eğer;

Thread.MIN_PRIORITY =1
Thread.NORM_PRIORITY =5
Thread.MAX_PRIORITY=10
Görüldüğü gibi Thread enum değerleri olmasına karşın öncelik atamasında standart 1-10 arasında tam sayı değerler kullanabilirsiniz. Yani;

i1.setPriority(Thread.MIN_PRIORITY); // i1.setPriority(1);
i2.setPriority(Thread.NORM_PRIORITY); // i2.setPriority(5);
i3.setPriority(Thread.MAX_PRIORITY); // i3.setPriority(10);
Yukarıdaki kullanımlar aynı kullanımlardır. Bunun dışında arada bir değer atamak istediğinizde tek yapmanız gereken i3.setPriority(7); şeklinde komutunuzu girmenizdir :)

Ertuğrul Kara                   
[email protected]  

Mehmet Metin Altuntaş
[email protected]
Makale:
JAVA İçinde Thread Kullanımı J# ve Java dili Ertuğrul Kara
  • Yazılan Yorumlar
  • Yorum Yaz
MAY
4
2012
Güzel yazı, teşekkürler
KAS
6
2009
"Bekleme durumundaki Thread' i uyandırır. Metod sonrasında Thread, haz durumuna geçer." Bir thread nasıl HAZ durumuna geçer açıklayabilir misiniz?
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor