RSS

>Threads – Creating Threads

14 Feb

>

Herkese merhaba ;

Size Java threadlerinin nasıl yaratıldığını, nasıl kullanıldığını anlatmaya çalışacağım.Threadleri kullanmanın 2 temel yolu vardırYa Thread sınıfından bir instance yaratarak kullanabiliriz.Ya da thread tasklarını bir başka sınıfa abstract olarak geçirerek.

Aşağıda Thread tasklarını başka sınıflara geçirerek kullanmanın 2 farklı yolu gösterilmiştir.
Neden 2 farklı şekilde task aktarımı var derseniz.Eğer programınızda GUI kullanmanız gerekirse sınıfınız Frame sınıfından türemek zorundadır ya da bir kalıtım hiyerarşisi içindeki sınıfta Thread kullanmak isteyebilirsiniz.Böyle durumlarda ilgili sınıflara Runnable interface’ini implement etmeniz gerekir.İki kullanımın tek farkı burdur.

public class MyThread extends Thread {

@Override
public void run(){
//Foo
}
public static void main(String[] args) {
new MyThread().run();
//Ya da new MyThread().start();
}
}

ya da

public class MyThread implements Runnable {

@Override
public void run(){
//Foo
}
public static void main(String[] args) {
new MyThread().run();
}
}

Bir Threadin Yaşam Döngüsü
Threadler 3 farklı durumda olabilir.
New Thread : Bu durum ilklenmeden sonra start() metodu çağırılmadan önceki durumdur.
Alive Thread : Bu durum start() metodu çağırıldıktan sonraki durumdur.Bu durum da kendi içinde 2 duruma ayrılır.
-> Runnable : Çalışma halidir.Bu durumda thread ya çalışıyordur ya da çalışmak için sırasını bekliyordur.
-> Blocked : Çalışmaya hazır olmadığı durumdur.Bu durumdan çıkılabilecek koşullar sağlandığında runnable’a geçebilir
Dead Thread : run() metodu tamamlandığındaki durumdur.Bu state e giren thread tekrar çalıştırılamaz.

Thread Sınıfının Çok Kullanılan Metotları
start() : Thread,New durumundır ve bu metot threadi Alive durumuna sokar.Threadi çalıştırır.
stop() : Thread,Runnable durumundır ve bu metot threadi Blocked durumuna sokar.Threadin çalışmasını durdurur.
join() : Thread, Runnable durumundır ve threadi Blocked durumuna sokar ve thread başka bir threadin bitmesini bekler.Diğer thread çalışmasını bitirince tekrar Runnable durumna girer.
interrupt(): Thread,Runnable durumundır ve threadi Blocked durumuna sokar.Ve threadin tekrar Runnable durumuna geçmesi için programcı tarafından resume() edilmesi gerekir.
isAlive(): Thread Alive durumunda ise bu metot true döndürür.
isInterrupt(): Interrupt flagi set edilmişse true döndürür.

Şimdi bir basit örnek çözelim. Bir counter tutalım sürekli 10’a kadar sayıp başa dönsün.

public class MyThread extends Thread{

int seconds = 1;
@Override
public void run(){
for(;;){
System.out.println(“seconds : “+seconds);
if (seconds == 10) {
System.out.println(“Başa dön!”);
seconds = 0;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
seconds++;
}
}
public static void main(String[] args) {
new MyThread().start();
}
}

Herkese kolay gelsin 🙂



 
1 Comment

Posted by on February 14, 2010 in Creating Threads, Java, Threads

 

One response to “>Threads – Creating Threads

  1. Anonymous

    April 9, 2010 at 12:31

    >I totally support that! Continue that way!

     

Leave a reply to Anonymous Cancel reply