Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
J#.NET / Java
YAZAR HAKKINDA
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ı
:
76359
Yorum Sayısı
:
2
yorum yaz
SİTE İÇİ ARAMA
Ü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.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
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.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Burak Selim Şenyurt
Bellek Yönetiminde Verimlilik için İpuçları (Rust Odaklı)
7.7.2025
Burak Selim Şenyurt
Rust ve Güvenli Bellek Yönetimi Hakkında
7.7.2025
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
Ertuğrul Kara
/
J#.NET / Java
/
JAVA İçinde Thread Kullanımı
JAVA İçinde Thread Kullanımı
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
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
ertugrulkara@msn.com
Mehmet Metin Altuntaş
mehmetmetinaltuntas@hotmail.com
Makale:
JAVA İçinde Thread Kullanımı J# ve Java dili Ertuğrul Kara
Yazılan Yorumlar
Yorum Yaz
MAY
4
2012
Gürcan Kavakçı
/
üye hakkında
Güzel yazı, teşekkürler
KAS
6
2009
Ahmet Atar
/
üye hakkında
"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
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl