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 🙂